ブロガーの実験室スポンサー広告
> そのまま使えるmodRewriteの技10発Add St> ブロガーの実験室DreamNews
> そのまま使えるmodRewriteの技10発Add St
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


--.--.--|スポンサー広告||TOP↑
http://d.hatena.ne.jp/zakira/20080129/1201614381

そのまま使えるmodRewriteの技10発Add Star

| 22:46 |

modRewiteはURL操作で最強のツールです。

数年前、これの存在を知ったときはWEB関連の技術の中で一番の衝撃を受けました。

modRewriteの小技をまとめてあるサイトが無かったので、まとめの為のエントリーです。


modRewiteとは

・Apacheのモジュールの一つ

・URLを書き換えられる(リダイレクト)

・一般的には.htaccessに書いて使う


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]

今回は、ここまで。



2011.08.08|DreamNewsコメント(0)TOP↑
名前:
コメントタイトル:
メールアドレス:
URL:
コメント:

パスワード:
管理人だけに表示:
管理者にだけ表示を許可
カテゴリー
最近の記事
最近のコメント
最近のトラックバック
ブログ検索
管理人のブログ一覧
管理人へメール

名前:
メール:
件名:
本文:

月別アーカイブ
プロフィール

やまもも実験室

Author:やまもも実験室
FC2ブログへようこそ!

RSSフィード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。