1

ファイルの大文字と小文字を区別しない.htaccessファイルを作成しようとしています。私はこれまでに次のものを持っています:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html

これは、ファイル名を正確に入力すると機能します。たとえば、私のファイルの1つはAbout.htmlです。www.domain.com/Aboutと入力すると正しい場所に移動しますが、www.domain.com/aboutと入力すると正しく表示されません。

[NC]を使用している人に関する投稿を見たことがありますが、それも機能しません。私も入れてみました

CaseInsensitive On

しかし、それはすべてを壊しているようです(ホームページをロードすることさえできませんでした)ので、私はそのビットを取り出しました。誰かがこれを達成する方法について何か考えがありますか?

4

1 に答える 1

1

大文字と小文字の区別はそのようには機能しません。ファイルではなく、正規表現の一致に対して大文字と小文字の区別がアクティブになります。

例えば ​​:

RewriteRule ^somefile.php$ /index.php
RewriteRule ^somefile.php$ /index2.php [NC]

誰かがアクセスしようとするhttp://domain.com/SomeFile.phpと、最初の行とは一致しませんが、2番目の行は一致します。これにより、彼はindex2.php(index.phpではなく)にリダイレクトされます。ただし、index2.phpファイルにINDEX2.phpという名前が付けられている場合、リダイレクトによって404notfoundエラーがスローされます。

あなたが探しているのはRewriteMapを使用することです。これをサーバー構成ファイルに入れる必要があります:

RewriteMap lc int:tolower 

apacheを再起動し、htaccesで次のようなルールを使用します。

RewriteRule ^(.*)$ /${lc:$1} 

これにより、リクエストはすべて小文字になります。ファイルはすべて小文字にする必要があります。

RewriteMapの詳細=>ドキュメントを参照

于 2012-08-19T20:36:34.657 に答える