htaccessの設定 覚え書き・メモ

htaccessについて

htaccessの書籍がなかったので、都度調べながら自分用の覚え書き・メモを追加していこうと思います。正規表現についてはこちらのページを参照してください。

RewriteRule

基本は「RewriteRule」を使ってリダイレクト。
検索すると、Redirect permanentで説明しているページがあるが、 正規表現やオプションフラグが使えないなどのデメリットがあるので、通常は使わない。

フラグ

[L]
「Last(最後)」という意味で、この処理はここで最後という意味。
[R]
「Redirect」の形式を指定。
301」は、恒久的リダイレクト
302」は、一時的リダイレクト(指定しないと302になる)
通常は、必ず [R=301,L]をつける。302だとGoogleさん的によろしくない。302はメンテナンスページなどで使う。
[QSA]
urlに「?abc=123」のようなQueryStringがある場合に使う。 QSAについては、以下のページを参照してください。
参照:https://qiita.com/tkykmw/items/c1e2df5e96d9dad3a07a

RewriteCond

「RewriteCond」は、「RewriteRule」を実行するための条件の記述(ifみたいな感じ。)
「RewriteCond」の条件に一致した場合のみ「RewriteRule」を実行します。

フラグ

[NC]
大文字小文字を区別しない。通常は、自動で区別します。
[OR]
複数行で記述した場合に、ORになります。通常は自動でANDとみなされます。

サンプル

条件Aもしくは条件Bの場合にリダイレクト処理。 条件Aかつ条件Bの場合にリダイレクト処理。 変数一覧については、以下のページを参照してください。
参照:https://weblabo.oscasierra.net/apache-rewritecond-base/

条件パターン

-d ディレクトリが存在する場合true
-f ファイルが存在する場合true
!-d ディレクトリが存在しない場合true
!-f ファイルが存在しない場合true
その他「>」「<」「=」など色々あります。
条件パターン一覧参照:http://oxynotes.com/?p=7392

サンプル

リクエストしたファイルとディレクトリが存在しない場合

()と$1,$2,$3など

$1は一つ目の「()」の中をそのまま$1に挿入
$2は二つ目の「()」の中をそのまま$2に挿入 $3は三つ目の「()」の中をそのまま$3に挿入

サンプル

abc.htmlにアクセスがあれば、hoge/abc.htmlにアクセスする場合

RewriteBase

RewriteBaseはベースとなるディレクトリを明示する。
ルートディレクトリにhtaccessを設置した場合は、基本的には以下のようにする。 参照:http://ysklog.net/mod-rewrite/rewrite-base.html

その他

#

コメントを挿入する行で使う。

IEに互換表示させない。