2012-05-15 62 views
1

在我尋求幫助之前卡住了這一段時間,任何幫助表示讚賞。.htaccess在應用規則時不會忽略一個目錄

對於所有密集的目的,我不得不使用這種方法來重定向所有的小寫URL來工作我當前的設置,它不是我所知道的。

這個問題是當我使用這個設置目錄中的所有Url應該跳過休息。例如/不要觸摸/文件1停止工作 - 我需要插入下面的代碼,以便小寫重寫不適用/不要觸摸

RewriteCond %{REQUEST_URI} "/dont-touch/" [OR] 
RewriteCond %{REQUEST_URI} "/blog/" 
RewriteRule ![A-Z] - [S=26] 
RewriteRule ^(.*)A(.*)$ /$1a$2 [R,L] 
RewriteRule ^(.*)B(.*)$ /$1b$2 [R,L] 
RewriteRule ^(.*)C(.*)$ /$1c$2 [R,L] 
RewriteRule ^(.*)D(.*)$ /$1d$2 [R,L] 
RewriteRule ^(.*)E(.*)$ /$1e$2 [R,L] 
RewriteRule ^(.*)F(.*)$ /$1f$2 [R,L] 
RewriteRule ^(.*)G(.*)$ /$1g$2 [R,L] 
RewriteRule ^(.*)H(.*)$ /$1h$2 [R,L] 
RewriteRule ^(.*)I(.*)$ /$1i$2 [R,L] 
RewriteRule ^(.*)J(.*)$ /$1j$2 [R,L] 
RewriteRule ^(.*)K(.*)$ /$1k$2 [R,L] 
RewriteRule ^(.*)L(.*)$ /$1l$2 [R,L] 
RewriteRule ^(.*)M(.*)$ /$1m$2 [R,L] 
RewriteRule ^(.*)N(.*)$ /$1n$2 [R,L] 
RewriteRule ^(.*)O(.*)$ /$1o$2 [R,L] 
RewriteRule ^(.*)P(.*)$ /$1p$2 [R,L] 
RewriteRule ^(.*)Q(.*)$ /$1q$2 [R,L] 
RewriteRule ^(.*)R(.*)$ /$1r$2 [R,L] 
RewriteRule ^(.*)S(.*)$ /$1s$2 [R,L] 
RewriteRule ^(.*)T(.*)$ /$1t$2 [R,L] 
RewriteRule ^(.*)U(.*)$ /$1u$2 [R,L] 
RewriteRule ^(.*)V(.*)$ /$1v$2 [R,L] 
RewriteRule ^(.*)W(.*)$ /$1w$2 [R,L] 
RewriteRule ^(.*)X(.*)$ /$1x$2 [R,L] 
RewriteRule ^(.*)Y(.*)$ /$1y$2 [R,L] 
RewriteRule ^(.*)Z(.*)$ /$1z$2 [R,L] 

這是我的.htaccess文件看起來如何,我已經試圖把它在開始......結束。什麼都沒有

RewriteEngine On 



RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 


RewriteCond %{REQUEST_URI} !/component/ 
RewriteCond %{REQUEST_URI} !/administrator/ 
RewriteCond %{HTTP_HOST} ^(www.)?example\.com$ [NC] 
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L] 
+0

我不得不承認我對這件事做了雙重考慮:**對於所有密集目的**。對於所有意圖和目的?我認爲你在Apache服務器上並且更改.htaccess被識別和處理?無論如何,根據下面的答案,你解決了這個問題? –

回答

0

首先,你在這裏使用RewriteMap指令的更好:

RewriteEngine On 
RewriteMap lc int:tolower 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lc:$1} [R=301,L] 

這將改變一切URI爲小寫,而不是26條慢規則。

其次,對於目錄不被重寫,我不認爲你應該把它們放在引號

RewriteCond %{REQUEST_URI} ^/dont-touch(/|$) [OR] 
RewriteCond %{REQUEST_URI} ^/blog(/|$) 
RewriteRule ^.*$ - [NC,L] 

如果你把[L]旗底,沒有低於該點會干擾這個規則。

+0

對,但沒有RewriteMap lc int:tolower 必須位於httpd.conf或VHOST文件中。我沒有訪問權限。 – Persist404

+0

嗯,是的,聲明需要進入虛擬主機或conf文件。一旦它在那裏,你可以在.htaccess中使用地圖。也許你的主機提供商有一個地圖定義? – Ansari

+0

我會發現並試用這個,謝謝 – Persist404