.htaccess とは
webサーバの設定をするファイルのことです。
アクセス制限、ユーザー認証、リダイレクト、404エラーなどの設定ができます。
参考リンク
.htaccess(wikipedia).htaccess のルール
ファイル名を別名で定義することができる
httpd.confのAccessFileNameで指定すればOKです。
例).hoge という名称のファイルに変更する。
AccessFileName .hoge
パーミッション
デフォルトは「644(rw-r–r–)」です。
文字
文字コードは UTF-8(BOMなし)。
改行コードは「LF」。
そして最終行は空行にします。
行頭の空白文字は無視されるので見やすいようにインデントするといいですね。
影響範囲
設置したディレクトリ含むその配下すべてに影響があります。
つまり WordPress では「public_html→自分のサイト名」に設置されているので、ブログ全体に影響があることになります。
.htaccess の書き方
例として WordPress で発行されている .htaccess を抜粋しました。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
コメントを記述する
コメントを記述するときは行の先頭に「#」を付ければOKです。
コメントは日本語でも問題ありません。
# BEGIN WordPress
Apache ver2.0系以降の場合は行の途中からコメントを入れることができます。
このとき「”」でコメントを囲みます。
RewriteEngine On "# 行の途中コメント"
<IfModule mod_rewrite.c>hoge</IfModule>
使用している環境で mod_rewrite が使えるか確認し、使える場合のみ hoge が実行されます。
はじめから mod_rewrite が使えるとわかっている場合は省略することもできます。
RewriteEngine
mod_rewrite の On/Off です。
デフォルトでは Off になっているのでリダイレクトなど行う場合は On にします。
RewriteBase
リダイレクトしたURLのベースになるディレクトリを指定します。
省略した場合は .htaccess を設置した階層がベースになります。
RewriteCond
RewriteRule を実行するための条件を指定します。
複数行指定することもできます。
書式
RewriteCond テスト文字列 条件パターン [フラグ]
フラグ
AND | フラグを省略し RewriteCond を連続して記述した場合は [AND] として処理されます。 すべての条件に一致する場合に実行します。 |
OR | RewriteCond を連続して記述した場合にいずれかの条件に一致する場合に実行します。 |
NC | 大文字小文字を区別しないで比較するようにします。 どちらも指定する場合にはカンマで区切り [OR,NC] と記述します。 |
テスト文字列、条件パターン
テスト文字列として使用できる環境変数や、条件パターンで使用できる演算子は下記参考リンクを参照してください。
環境変数の一例
HTTP_HOST | ホスト名。 例えば、「http://www.hoge.com/」の場合、 %{HTTP_HOST} は 「www.hoge.com」になります。 |
HTTP_REFERER | リファラー。 直前に閲覧していたページのURLです。 |
REQUEST_URI | URI情報。 例えば、「http://www.hoge.com/aaa/bbb.html」の場合、 %{REQUEST_URI}は 「/aaa/bbb.html」 になります。 |
REQUEST_FILENAME | リクエストされたファイル名です。 |
演算子の一例
! | 否定。逆の意味になります。 |
-d | ディレクトリが存在する場合は true。 |
-f | ファイルが存在する場合は true。 |
<= | テスト文字列以上の場合は true。 |
>= | テスト文字列以下の場合は true。 |
RewriteCond 参考リンク
apache2.4 mod_rewriteRewriteCond Directive項目を参照してください。
RewriteRule
URLの書き換えを実行します。
書式
RewriteRule 条件パターン 置換文字列 [フラグ]
条件パターン、置換文字列
正規表現が使えます。
フラグ
フラグは下記参考リンクを参照してください。
フラグの一例
L | マッチした場合、後続の処理を行わず終了します。 |
R=301 | 301リダイレクトします。 |
R=302 | 302リダイレクトします。 「R」一文字でも同じ意味になります。 |
F | 403-Forbidden。 |
RewriteRule 参考リンク
apache2.4 mod_rewriteRewriteRule Directive を参照してください。
例の解釈
# すべての条件パターンで/index.phpに置換する。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
ここまでを踏まえてWordPressの .htaccess は次のような意味になります。
リクエストされたファイル名が存在していない、かつ、
リクエストされたファイル名のディレクトリが存在しない場合、
すべてのURLのパターンで「/index.php」に書き換える。
となります。
コメント