WEB/システム/IT技術ブログ

mod_rewriteで動的URLを静的URLに

以前にWordpressでパーマリンクの設定方法を紹介しました。
WordPressのパーマリンク設定でSEO
Apache1.2以降で使用可能なモジュールrewriteを利用して実現しているのですが、Wordpressに限らず、動的URLを静的URLに変更できます。

このサイトは動的ではありませんが、例にしてURL変換を説明すると、
http://blog.he-ron.jp/cms/ ⇒ http://blog.he-ron.jp/?cat=cms

http://blog.he-ron.jp/cms/wordpress/ ⇒ http://blog.he-ron.jp/?cat=cms&subcat=wordpress
などといった、静的なアドレスへのアクセスに対して、動的なアドレスへ誘導することができます。

mod_rewriteのインストール

rewriteモジュールはApacheに組み込まれており、有効にするためにはhttpd.confファイルを操作する必要があります。具体的には以下の行のコメントアウトを外して、Apacheを再起動します。

# LoadModule rewrite_module modules/mod_rewrite.so

つまり、mod_rewriteのインストールはApacheの設定変更の権限がないと利用できません。レンタルサーバについては、デフォルトで利用可能なものとそうでないものがあります。後者の場合はあきらめるしかないかもしれません。

.htaccessを使ったrewriteの設定方法

rewriteの設定方法はhttpd.confでも行えますが、レンタルサーバなどでは権限がないので、ここでは.htaccessを使った方法を紹介します。
上でのURL変換を例にすると、以下のように.htaccessに記述すれば、.htaccessを置いた配下のディレクトリにルールを設定することができます。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/$ ?cat=$1 [L]
RewriteRule ^(.*)/(.*)/$ ?cat=$1&subcat=$2 [L]
</IfModule>

見慣れない記述方法で分かりずらいですね。rewriteは高機能で、非常に複雑な設定も可能です。その詳細は以下を参考にしました。
URLの書き換え Rewrite

rewriteの問題点

以前に、動的アドレスはSEOに不利ということでrewriteを紹介しましたが、最近では動的アドレスでも特に問題ないような見解があります。今となってはSEOとは無関係といえるかもしれませんので、アドレス変換を考えている方は注意したほうがよいです。これまで検索エンジンに登録されていた動的なアドレス、または非リンクが無効になるリスクを考慮したほうがよいでしょう。
また、rewriteを利用すると一般的にPOSTやGETができません。GETはrewriteでルール化すればよいのですが。アドレス変換といっても基本的にはリダイレクトと同じなので、リクエストにPOSTを含めることはできません。
さらには、アドレス変換には処理時間があり、アクセスに時間を要するといわれています。今の高機能なハードウェア上ではたいした問題ではないかもしれませんが。

これらのメリット、デメリットを含めrewriteをいかに使うか検討したほうがいいかもしれないですね。

B!

Comment

コメントはありません

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives