コピペしていた .htaccess を読む


今までコピペしていた .htaccess の記述を理解するために調べた覚え書きです。

.htaccess
RewriteEngine on

RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^(.*)\.(html|php)$ sp/$1.$2 [R]
RewriteBase /

知識 0 なので最初は ヒィー! ムズカシソ- って拒絶反応がでますが、
よく見ると英語をペンパイナッポーケースで記述しているだけです。

とうことで、英語の意味を調べます。

英語 読み方 意味
modify モデファイ 変更・修正
rewrite リライト 書き換え
condition コンディション 条件
rule ルール ルール

あとは、パイナップルにペンを刺す要領です。

rewiteconditionRewriteCond となり、意味は「書き換え条件」です。

rewiteRuleRewriteRule となり、意味は「書き換えルール」です。

これなら、何をしているのかわかります

最初に記述したコードには、RewriteCond が2つあります。

書き換えの条件を2つ指定しているということです。

書き換えの条件を満たす場合に、RewriteRule の書き換えのルールに従って、書き換えをしているということですね

%{REQUEST_URI} !/sp/ は、アクセスしてきたURLに /sp/ がない場合という意味です。

! は否定を表していますね。

RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone) は、アクセスしてきたデバイスが (iPod|iPhone|iPad|Android|Windows\ Phone) だった場合という意味です。

これらの条件に該当する場合は、^(.*)\.(html|php)$ sp/$1.$2 [R] というルールでURLの書き換えているということですね。

^(.*)\.(html|php)$ sp/$1.$2 [R] という記述は、謎記号が連射されているので、正規表現です。

RewriteEngine on は、定型文のような感じで、書き換えをしたい場合に on を指定します。

RewriteBase / は書き換えするときのベースのURLです。

何となく理解できました