.htaccess設定例いろいろ(その他応用編)

.htaccess設定例いろいろ(その他応用編)Web開発者の備忘録最近やたらと使う事が多くなった .htaccess ファイル。
備忘録兼ねてよく使いがちな設定例をいくつかサンプルとして挙げておきます。

MIMEタイプを付ける

AddType application/text/plain ai

他にも .3gpファイルなど色々使い道はあります。

CGIを実行可能とする

Options ExecCGI Includes

どうしてもHTMLファイルなど置いてあるところでCGIを実行したい場合に使えます。
但し、サーバ上でCGI実行を拒否している場合はこの設定を行ってもムダなのでご注意下さい。

SSIを有効にする

AddType text/html .shtml
AddHandler server-parsed .shtml

今更SSI・・という気もしますがご参考まで。

ディレクトリアクセス時のデフォルト表示ページの優先順位設定

DirectoryIndex index.html index.htm index.php

通常はPHPファイルにアクセスさせるけど、メンテなどで一時的に htmlファイルにアクセスさせたい場合 ⇒ index.php の他に index.html ファイルを作る
ページリニューアル中、どうしても本番と同じディレクトリ上で新しいページを作らないといけないハメになった場合 ⇒ index.html の他に index.htm を作る
などなど・・

Rewrite(*.php?a=bなどを、ディレクトリ形式などに置き換えてSEO上有利にする)

RewriteEngine on
RewriteRule ^abc/(.*)/(.*)/(.*)$ /abc/data.php?e=$1&i=$2&f=$3
RewriteCond %{HTTP_HOST} ^(en\-pc\.jp)(:80)? [NC]
RewriteRule ^(.*)$ http://www.en-pc.jp/$1 [R=301,L]
RewriteRule ^([0-9A-Za-z#$\(\)\=\-\^\|\[\{\@\`\}\]\:\\;\+_\.\>\<\,]+)\.html$ page.php?pagename=$1&%{QUERY_STRING} [L]

例1:http://en-pc.jp/ でアクセスがあった場合、 http://www.en-pc.jp/にアクセスしなおしてもらう。
例2:/abc/1/2/3/ とアクセスした場合に、 /abc.php?e=1&i=2&f=3とプログラムに渡すようにする
例3:/abc.html とアクセスした場合に、 /page.php?pagename=abc とプログラムに渡すようにする

リダイレクト(サイト移転)

Redirect 301 /old/link.html http://www.en-pc.jp/newlink.html
Redirect permanent /contact.html http://www.en-pc.jp/form/

移転前ページにアクセスがあった場合に、移転後ページに自動でアクセスしてもらう方法。
SEO対策上とっても大切。

PHPプログラム上で動的に変更できない設定を行う例

php_value mbstring.encoding_translation Off

ini_set()で設定できないものがいくつかありますが、その中には .htaccess で設定可能な場合があります。その場合この方法が使えます。
上の例は、php で自動的に入力データの文字コード変更を行っている場合に、それを無効とするやり方です。