.htaccessの適用範囲

2010年4月30日

.htaccessを設置する場合、影響を与える範囲に注意を払う必要がある。

一つ.htaccessを設置すると、その下にぶら下がる全ディレクトリに影響が及ぶ。

その影響を回避させたいディレクトリがある場合は、
個別に.htaccessを置いていく必要がある。

例えばUserAgentを見て携帯には携帯用ディレクトリに飛ばしたい場合、

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} “DoCoMo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “J-PHONE" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “KDDI" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “DDIPOKET" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “Vodafone" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “SoftBank" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Nokia.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^MOT-.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “L-mode" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “UP.Browser" [NC]
RewriteRule ^(.*)$ http://自ドメイン/m/$1 [L]

みたいな事を書いたら、m/.htaccessには

RewriteEngine off

として切ってあげたりしないといけない。自ドメインでなければこの問題は発生しないが。