そのまま使えるmodRewriteの技10発
引っ越ししました!
新しいサイトはこちら
ディレクターズラボ
modRewiteはURL操作で最強のツールです。
数年前、これの存在を知ったときはWEB関連の技術の中で一番の衝撃を受けました。
modRewriteの小技をまとめてあるサイトが無かったので、まとめの為のエントリーです。
modRewiteで何ができるか
・携帯サイトの振り分けができる
・動的ページを静的ページに見せることができる(SEO対策)
・サイトの引越し(リニューアル)の時に一度にリダイレクトができる。
・外部からの直リンクを防ぐ(ページ)
・外部からの直リンクを防ぐ(画像)
等、考えれば他にも色々あるかもしれません。
modRewiteの設置方法
一般的には、.htaccessの中に記述します。.htaccessの書き方については別のサイトを参照してください。
まずは、.htaccessの中に
Options FollowSymLinks
RewriteEngine On
の2行を書きます。FollowSymLinksに関しては必要ないサーバーもありますが、書いていても害は無いはず。
実際に使ってみよう
■技1発目 携帯サイトの振り分けを行う
携帯サイトを作るときは、ディレクトリ [i] [e] [s]などを作って、そこにファイルを設置し、
http://www.hogehoge.com/i/
などとしてアクセスしますが、下記の記述でhttp://www.hogehoge.com/でアクセスしたら自動的にリダイレクトすることができます。
少し考えると、ちょっと悪いこともできちゃいます。
ファイル: .htaccess
設置場所: http://www.hogehoge.com/のドキュメントルート
Options FollowSymLinks RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo RewriteRule ^$ http://www.hogehoge.com/i/ [R] RewriteCond %{HTTP_USER_AGENT} SoftBank RewriteRule ^$ http://www.hogehoge.com/s/ [R] RewriteCond %{HTTP_USER_AGENT} UP.Browser RewriteRule ^$ http://www.hogehoge.com/e/ [R]
■技2発目 動的ページを静的ページに見せる
modRewriteはSEO対策で有名になりました。
動的ページを静的に見せ、検索エンジンにインデックスされやすくします。
例)
http://www.hogehoge.com/search.php?type=a&id=123
↓
http://www.hogehoge.com/a_123.html
ファイル: .htaccess
設置場所: URLを書き換えたいディレクトリ
Options FollowSymLinks RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9A-Za-z]+)_([0-9A-Za-z]+).html$ search.php?type=$1&id=$2
すこし、ぐちゃぐちゃしてます、
[a_123.html]の部分が ^([0-9A-Za-z]+)_([0-9A-Za-z]+).html$になります。アンダースコア(_)区切り文字になっています。
[0-9A-Za-z]は、数字またはアルファベット(大文字/小文字含む)を表しています。
その後ろのプラス(+)が、1文字以上という意味です。そしてそれを丸括弧()で囲むことで、後方の$1$2に渡しています。
詳しくは、マニュアルを読むのが良いと思いますが、正規表現という書き方です。
■技3発目 サイトの引越し(リニューアル)の時に一度にリダイレクト。
例えば、http://www.hoge.com/ が http://www.fuge.com/ というように、ドメインが変わったとします。
その際、http://www.hoge.com/のどのファイル/ディレクトリにアクセスされても、http://www.fuge.com/に転送させることができます。
と、言っても実はコレ、機能的には.htaccessでもできてしまうのですが、modRewriteを使うメリットとしては検索エンジン対策にもなります。
ステータスコード301を返すことによって、検索エンジンの評価(有名なのはGoogleのPageRank)をそのまま引き継ぐことができます。
ファイル: .htaccess
設置場所: http://www.hoge.com/のドキュメントルート
RewriteEngine on RewriteRule ^/(.*)$ http://www.fuge.com/$1 [R=301,L]
■技4発目 外部からの直リンクを防ぐ(ページ)
あるページへ、直接リンクされたくない場合、下記のようにすることでページへの直リンクを防ぐことができます。
下記はドキュメントルートが、/public_htmlで、http://www.hoge.com/test/に直リンクされたくない場合です。
ファイル: .htaccess
設置場所: http://www.hoge.com/のドキュメントルート
<Directory /public_html/test> Options FollowSymLinks RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://www.hoge\.com/.*$ [NC] RewriteRule ^(.*)$ - [F] </Directory>
■技5発目 外部からの直リンクを防ぐ(画像)
画像への直リンクは特に要望が多いと思います。
下記のようにすれば、直リンクを防ぐことが可能です。
ファイル: .htaccess
設置場所: http://www.hoge.com/のドキュメントルート
Options FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} ^(.*)\.(gif|png|jpg)$ [NC] RewriteCond %{HTTP_REFERER} !^http://hoge\.com/.*$ [NC] RewriteRule ^(.*)$ - [F]
今回は、ここまで。
長くなりすぎた&実はすぐに10個も技が思いつかなかったので近いうちにまたエントリーします。