htaccessの書き方メモとApacheのバージョンが違う時の注意点

その他

htaccessはいつも使うわけではないのですが、忘れた頃に使うことが多いのでまた忘れた頃用に残しておこうと思います。

別のディレクトリへリダイレクト

/file/1/を/file/4/へ単純なリダイレクト

Redirect permanent /file/1/ /file/4/

下層のファイルへリダイレクト

index.htmlのアクセスを/test/index2.htmlへ301リダイレクト。

RewriteEngine on
RewriteBase /
RewriteRule index.html /test/index2.html [R=301,L]

下層のファイルへリダイレクト(同ファイル名)

index.htmlへのアクセスを/test/file/index.htmlへ301リダイレクト。同ファイル名なので除外処理を入れています。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/test/file/)
RewriteRule index.html /test/file/index.html [R=301,L]

メンテナンスページを表示

/file/maintenance.html以外に来たアクセスをリダイレクト

ErrorDocument 503 /file/maintenance.html

RewriteEngine On
RewriteCond %{REQUEST_URI} !=/file/maintenance.html
RewriteRule ^.*$ /file/maintenance.html [R,L]

Apacheのバージョンによる書き方の違い

htaccessはサーバーのApacheで動くものですが、バージョンによって少し書き方が違うことがあるようです。

こちらによるとApacheの2.0と2.2以降で違いがあるようです。ですので、他のサイトの使い回しが動かない場合はこれが原因の可能性があるので気をつけましょう。