2016-09-01 18 views
1

特定のファイルをテストし、存在する場合はPHPスクリプトを実行し、存在しない場合は別のWebにリダイレクトする.htaccessファイルがあります。RewriteCondの大文字と小文字を区別しないファイルチェック

RewriteEngine on 
RewriteCond %{DOCUMENT_ROOT}/directory/$1 -f 
RewriteRule ^(.+\.png)$ process.php?file=$1 [QSA] 

RewriteRule ^(.+\.png)$ http://other.website.com/$1 

私は直接PHPスクリプトを実行し、リダイレクトを行うが、それはより速く、この方法だ可能性があります。しかし、私はRewriteCondを大文字小文字を区別しないようにする必要があります。私はすべてのフラグを設定し、スペルチェックを有効にしようとしましたが、役に立たないです。

RewriteEngine on 
CheckSpelling on 
RewriteCond %{DOCUMENT_ROOT}/directory/$1 -f [NC] 
RewriteRule ^(.+\.png)$ process.php?file=$1 [QSA,NC] 

RewriteRule ^(.+\.png)$ http://other.website.com/$1 

綴りモジュールは、httpd.confで有効になっている、と.htaccessファイルは、すべての可能な設定を変更することができますが、それはまだ別のケースに入れられたファイル名を持つファイルが入力された場合にリダイレクトしていない、前と同じように動作します。

答えて

1

Apache設定でtolowerマッピングを使用してみてください。まず、あなたのhttpd.conf(またはapache2.confあるいはバーチャルホストの設定)でtolower呼び出しのためのcreate a map

RewriteMap lc int:tolower 

次に、あなたの条件チェックで、小文字に$1を変換:

RewriteEngine on 
RewriteCond %{DOCUMENT_ROOT}/directory/${lc:$1} -f [NC] 
RewriteRule ^(.+\.png)$ process.php?file=$1 [QSA,NC] 

RewriteRule ^(.+\.png)$ http://other.website.com/$1 

はそれを注意してください、のためにあなたのファイルは常に下のアルファベットでなければなりません。

+0

良い方法ですが、既にそこにファイルがあり、一部には競合する名前があります(大文字と小文字のみ)。私は単純にすべてを小文字に変換できません。 – IllidanS4

関連する問題