2013-12-08 65 views
2

我想讓包含大寫字符的我的url被重定向到小寫url。不幸的是我沒有訪問httpd.config文件。所以我試着用這個方法來重寫網址爲:http://www.askapache.com/htaccess/rewrite-uppercase-lowercase.html。但它增加了額外的/因爲它是一個循環,也不起作用(504錯誤),當URL包含兩個以上的部分(前www.mysite.com/part1/part2/part3/)將大寫url重寫爲小寫url htaccess

如何可以我解決這個問題還是有其他更好的方法嗎?

回答

1

如果你看看你的Apache的錯誤日誌(這是最有巨大的感謝這件事),你應該看到沿東西線:

[Sun Dec 08 09:46:28.884713 2013] [rewrite:trace3] [pid 4860:tid 1532] mod_rewrite.c(468): [client ::1:50143] ::1 - - [localhost/sid#56cb48][rid#1642140/initial] [perdir C:/wamp/www/] strip per-dir prefix: C:/wamp/www/AAA/AA -> AAA/AA 
[Sun Dec 08 09:46:28.884713 2013] [rewrite:trace3] [pid 4860:tid 1532] mod_rewrite.c(468): [client ::1:50143] ::1 - - [localhost/sid#56cb48][rid#1642140/initial] [perdir C:/wamp/www/] applying pattern '[A-Z]' to uri 'AAA/AA' 
[Sun Dec 08 09:46:28.884713 2013] [rewrite:trace5] [pid 4860:tid 1532] mod_rewrite.c(468): [client ::1:50143] ::1 - - [localhost/sid#56cb48][rid#1642140/initial] setting env variable 'HASCAPS' to 'TRUE' 
[Sun Dec 08 09:46:28.884713 2013] [rewrite:trace3] [pid 4860:tid 1532] mod_rewrite.c(468): [client ::1:50143] ::1 - - [localhost/sid#56cb48][rid#1642140/initial] [perdir C:/wamp/www/] add path info postfix: C:/wamp/www/AAA -> C:/wamp/www/AAA/AA 
[Sun Dec 08 09:46:28.885713 2013] [rewrite:trace3] [pid 4860:tid 1532] mod_rewrite.c(468): [client ::1:50143] ::1 - - [localhost/sid#56cb48][rid#1642140/initial] [perdir C:/wamp/www/] strip per-dir prefix: C:/wamp/www/AAA/AA -> AAA/AA 
[Sun Dec 08 09:46:28.885713 2013] [rewrite:trace3] [pid 4860:tid 1532] mod_rewrite.c(468): [client ::1:50143] ::1 - - [localhost/sid#56cb48][rid#1642140/initial] [perdir C:/wamp/www/] applying pattern '^([^A]*)A(.*)$' to uri 'AAA/AA' 
[Sun Dec 08 09:46:28.885713 2013] [rewrite:trace2] [pid 4860:tid 1532] mod_rewrite.c(468): [client ::1:50143] ::1 - - [localhost/sid#56cb48][rid#1642140/initial] [perdir C:/wamp/www/] rewrite 'AAA/AA' -> 'aAA/AA' 
[Sun Dec 08 09:46:28.885713 2013] [rewrite:trace3] [pid 4860:tid 1532] mod_rewrite.c(468): [client ::1:50143] ::1 - - [localhost/sid#56cb48][rid#1642140/initial] [perdir C:/wamp/www/] add per-dir prefix: aAA/AA -> C:/wamp/www/aAA/AA 
[Sun Dec 08 09:46:28.885713 2013] [rewrite:trace3] [pid 4860:tid 1532] mod_rewrite.c(468): [client ::1:50143] ::1 - - [localhost/sid#56cb48][rid#1642140/initial] [perdir C:/wamp/www/] add path info postfix: C:/wamp/www/aAA/AA -> C:/wamp/www/aAA/AA/AA 

一切順利,直到路徑信息後綴是應用。我不知道爲什麼這就是,但我知道將DPI標誌應用於26個將大寫字母轉換爲小寫字母的RewriteRules將最有可能解決您的問題。有關DPI標誌

# If there are caps, set HASCAPS to true and skip next rule 
RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1] 

# Skip this entire section if no uppercase letters in requested URL 
RewriteRule ![A-Z] - [S=28] 

# Replace single occurance of CAP with cap, then process next Rule. 
RewriteRule ^([^A]*)A(.*)$ $1a$2 [DPI] 
RewriteRule ^([^B]*)B(.*)$ $1b$2 [DPI] 
RewriteRule ^([^C]*)C(.*)$ $1c$2 [DPI] 
RewriteRule ^([^D]*)D(.*)$ $1d$2 [DPI] 
RewriteRule ^([^E]*)E(.*)$ $1e$2 [DPI] 
RewriteRule ^([^F]*)F(.*)$ $1f$2 [DPI] 
RewriteRule ^([^G]*)G(.*)$ $1g$2 [DPI] 
RewriteRule ^([^H]*)H(.*)$ $1h$2 [DPI] 
RewriteRule ^([^I]*)I(.*)$ $1i$2 [DPI] 
RewriteRule ^([^J]*)J(.*)$ $1j$2 [DPI] 
RewriteRule ^([^K]*)K(.*)$ $1k$2 [DPI] 
RewriteRule ^([^L]*)L(.*)$ $1l$2 [DPI] 
RewriteRule ^([^M]*)M(.*)$ $1m$2 [DPI] 
RewriteRule ^([^N]*)N(.*)$ $1n$2 [DPI] 
RewriteRule ^([^O]*)O(.*)$ $1o$2 [DPI] 
RewriteRule ^([^P]*)P(.*)$ $1p$2 [DPI] 
RewriteRule ^([^Q]*)Q(.*)$ $1q$2 [DPI] 
RewriteRule ^([^R]*)R(.*)$ $1r$2 [DPI] 
RewriteRule ^([^S]*)S(.*)$ $1s$2 [DPI] 
RewriteRule ^([^T]*)T(.*)$ $1t$2 [DPI] 
RewriteRule ^([^U]*)U(.*)$ $1u$2 [DPI] 
RewriteRule ^([^V]*)V(.*)$ $1v$2 [DPI] 
RewriteRule ^([^W]*)W(.*)$ $1w$2 [DPI] 
RewriteRule ^([^X]*)X(.*)$ $1x$2 [DPI] 
RewriteRule ^([^Y]*)Y(.*)$ $1y$2 [DPI] 
RewriteRule ^([^Z]*)Z(.*)$ $1z$2 [DPI] 

# If there are any uppercase letters, restart at very first RewriteRule in file. 
RewriteRule [A-Z] - [N] 

RewriteCond %{ENV:HASCAPS} TRUE 
RewriteRule ^/?(.*) /$1 [R,L] 

更多信息,可以發現here和mod_rewrite的一般文件可以發現here