2016-12-05 6 views
1

いくつかのルールを追加するために.htaccessファイルにいくつかのルールを追加しました。これらのルールの一つは、私がリクエストURLが.jsファイル、の.cssやその他の特定の拡張子を持つされている場合は適用しないように、このルールをしたい、.htaccess内のURLの特殊文字の置換をスキップする

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)û(.*)$ /path/$1u$2 [L,R=301] 
RewriteRule ^(.*)\s(.*)$ /path/$1-$2 [L,R=301] 
RewriteRule ^(.*)&(.*)$ /path/$1-$2 [L,R=301] 
RewriteRule ^(.*)_(.*)$ /path/$1-$2 [L,R=301] 
RewriteRule ^(.*)%(.*)$ /path/$1-$2 [L,R=301] 

を以下のサンプルのような特殊文字を置き換えています。

私は解決策のカップルを試みましたが、まだ運がありません。類似の問題で提案されているコードの一部を以下に示します。

RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC] 

RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC] 

お手伝いがあれば、どうぞ。

このRanil

からの重要な点は、各のRewriteCond条件は唯一のRewriteRule直後 に適用され、覚えておいてくださいました。つまり、ルールがたくさんある場合は、 の条件を複製する必要があります。あなたが実際にいくつかの理由で ことをしたくない場合は、すべての あなたのルール

答えて

1

の先頭に否定を使用することができますが、特定ので要求を排除するために、別の書き換え条件を追加する必要がありますファイル名。

RewriteCond %{REQUEST_URI} !\.(js|css)$

上記の条件は、特定のファイルタイプのために検証し、それをfasleようになります。

完全なコードには、デバッグ用にhttp://htaccess.mwl.be/のようなオンラインツールを使用することができ

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !\.(js|css)$ 
RewriteRule ^(.*)û(.*)$ /path/$1u$2 [L,R=301] 
RewriteRule ^(.*)\s(.*)$ /path/$1-$2 [L,R=301] 
RewriteRule ^(.*)&(.*)$ /path/$1-$2 [L,R=301] 
RewriteRule ^(.*)_(.*)$ /path/$1-$2 [L,R=301] 
RewriteRule ^(.*)%(.*)$ /path/$1-$2 [L,R=301] 

になります。

+0

おかげで、このいずれかを試してみてください、すべてのルールの先頭に否定を使用することができることをしたくない場合は、テストツールは非常に便利です。 – DSEJ

1

はそれぞれのRewriteCond条件は唯一の直後のRewriteRuleに適用され、

を忘れないでください。この

RewriteCond %{REQUEST_FILENAME} !-f 
 
RewriteCond %{REQUEST_FILENAME} !-d 
 

 
RewriteCond %{REQUEST_URI} !\.(?:css|js)$ [NC] 
 
RewriteRule ^(.*)û(.*)$ /path/$1u$2 [L,R=301] 
 
RewriteRule ^(.*)\s(.*)$ /path/$1-$2 [L,R=301] 
 
RewriteRule ^(.*)&(.*)$ /path/$1-$2 [L,R=301] 
 
RewriteRule ^(.*)_(.*)$ /path/$1-$2 [L,R=301] 
 
RewriteRule ^(.*)%(.*)$ /path/$1-$2 [L,R=301]

を試してみてください。つまり、ルールがたくさんある場合は、条件を複製する必要があります。あなたが実際にいくつかの理由のために、あなたは

+0

便利です!ありがとう – DSEJ

1

は、

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RedirectMatch (.*)\.js$ %{HTTP_HOST}/$1.js 
RedirectMatch (.*)\.css$ %{HTTP_HOST}/$1.css 
RewriteRule ^(.*)û(.*)$ /path/$1u$2 [L,R=301] 
RewriteRule ^(.*)\s(.*)$ /path/$1-$2 [L,R=301] 
RewriteRule ^(.*)&(.*)$ /path/$1-$2 [L,R=301] 
RewriteRule ^(.*)_(.*)$ /path/$1-$2 [L,R=301] 
RewriteRule ^(.*)%(.*)$ /path/$1-$2 [L,R=301] 
関連する問題