1

在我求助之前,我在这个问题上停留了一段时间,感谢您提供任何帮助。

出于所有密集目的,我不得不使用此方法重定向所有小写 URL 以在我当前的设置上工作,我知道这不太好。

问题是当我使用此设置时,目录中的所有 URL 都应该跳过中断。例如 /dont-touch/File1 停止工作 - 我需要插入以下代码,以便小写重写不适用于 /dont-touch

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

1 回答 1

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]标志放在最后,低于这个点的任何东西都不会干扰这条规则。

于 2012-05-15T02:21:27.187 回答