web-dev-qa-db-ja.com

.htaccessを使用してApacheで大文字と小文字を区別しないようにするにはどうすればよいですか?

私は最近IIS=からApacheに切り替えましたが、不注意にも一部のリンクに大文字の問題があります。URLをすべて小文字またはすべて大文字に書き換える方法について話している人はかなりいますが、何かが必要です。 Apacheの大文字と小文字を区別しないようにするだけです。これは.htaccessで可能ですか?

17
user1397143

追加

CheckSpelling on

あなたの.htaccessファイルはもちろんRewriteEngineを有効にした後

最終的なコードは

RewriteEngine on
CheckSpelling on

それが最善で最も安全な方法だと思います。

変更することを忘れないでください

AllowOverride none

AllowOverride All

httpd.confファイル。htaccessファイルが正しく機能するようにします。

13
iEmad

CheckSpellingが機能せず、PHPを使用している場合は、404ページにPHPリダイレクトを追加して、小文字バージョンのURLにリダイレクトできます。最初に、まだ行っていない場合は、次のコードを.htaccessファイルに追加します(必要に応じて、ファイルを404.php以外の名前で呼び出すこともできますが、PHPファイルである必要があります)。 :

ErrorDocument 404 /404.php

次に、404.phpの先頭に次のコードを追加します(HTTPSを使用している場合は、2行目でhttp://https://に変更します)。

if(preg_match("/[A-Z]/", $_SERVER["REQUEST_URI"])){
    header("location:http://" . $_SERVER["HTTP_Host"] . strtolower($_SERVER["REQUEST_URI"]));
    exit();
}

このコードは、単純な正規表現を使用して、要求されたURIに大文字が含まれているかどうかを確認し、含まれている場合は、小文字で同じページにリダイレクトします。

0
Donald Duck