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]

これにより、26 個のスロー ルールではなく、URI 内のすべてが小文字に変更されます。

第二に、ディレクトリが書き換えられないようにするために、ディレクトリを引用符で囲む必要はないと思います

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

そして、[L]フラグを最後に置くと、それより下にあるものはこのルールに干渉しません。

于 2012-05-15T02:21:27.187 に答える