簡體   English   中英

將大寫 url 重寫為小寫 url htaccess

[英]rewrite uppercase url to lowercase url htaccess

我希望將包含大寫字符的 url 重定向到小寫 url。 不幸的是,我無權訪問 httpd.config 文件。 所以我嘗試用這種方法用 htaccess 文件重寫 url: http : //www.askapache.com/htaccess/rewrite-uppercase-lowercase.html 但它增加了額外的 / 因為它是一個循環並且當 url 由兩個以上的部分組成時它也不起作用(504 錯誤)(例如 www.mysite.com/part1/part2/part3/ )

我該如何解決這個問題,或者有其他/更好的方法嗎?

如果你查看你的 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 很可能會解決您的問題。

# 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]

關於DPI標志的更多信息可以在這里找到,mod_rewrite 的一般文檔可以在這里找到。

在 VirtualHosts 站點目錄(啟用站點)

RewriteEngine On
RewriteMap lowercase int:tolower 

並在 .htaccess:

RewriteCond $1 [A-Z]
RewriteRule ^(.*)$ /${lowercase:$1} [R=301,L]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM