kawama.jp

mod_rewriteでURLを書き換えつつクエリはそのまま引き継ぐ

カテゴリ: Apache,技術関連 — タグ: , , , , — 2010年11月15日 22:39 — Comments (0)hatebu count

「mod_rewriteを使って動的ページを静的ページのように見せる」というのが、SEO的に良いということで一時期流行りました。

現在ではサーチエンジンも進化し、静的だろうか動的だろうか評価は変わらなくなったようですが、人間の目から見てもクエリ文字列が並ぶよりはディレクトリ階層になっているほうがきれいなので、サイト構築の常套手段として定着している感があります。

mod_rewriteを使って動的ページを静的ページというテクニックはググればいくらでもでてきます。
たとえばこんな感じ。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z_]+)/$ index.php?var1=$1 [L]

こうすることで、http://example.com/hoge/ が http://example.com/index.php?var1=hoge として処理されるようになります。

ただこのままでは http://example.com/hoge/?page=1 とか http://example.com/hoge/?search=hoge のように、後ろにクエリパラメータが来てもその値が取得できないという問題があり、不便です。

これを解決するのがQSAというオプション。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z_]+)/$ index.php?var1=$1 [QSA,L]

これでオシリに引数がくっついてもindex.phpで処理できるようになります。

参考
http://blog.fkoji.com/2008/07172155.html

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Copyright (C) 2002 - 2017 kawama All Rights Reserved. — Powered by WordPress