2013年10月1日火曜日

.htaccessを使ってパラメータがないURLを作りたい。

.htaccessを使ってパラメータがないURLを作りたい

.htaccessを使ってパラメータがないURLを作りたいと考えることはありませんか?
検索エンジンは、複雑な構造のURLもクロールすることができますが
不可解なパラメータや長いURLになると、
ユーザーが不要だと誤解してしまったり、
URLの一部が削られてしまって、適切なコンテンツがソーシャルにシェアされていかない
そんなことが考えられます。
できるだけURLはシンプルにしたいと思うものです。

.htaccessを使えばパラメータがないシンプルな
URLに書き換えることが可能です。

こちらでは
パラメータが1つの場合
それから2つの場合を紹介します。


パラメータが1つの場合


Before
http://www.example.co.jp/index.php?page=1

After
http://www.example.co.jp/1/
もしくは
http://www.example.co.jp/1

という具合に表示したい場合
.htaccessを以下のように記述する

記述例

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

解説

1行目でmod_rewriteのリライトを使う宣言
2行目、3行目は実在するファイルやディレクトリにはリダイレクトを適用しない旨。
4行目は /1 と入力した際に index.php?page=1にアクセスする記載
5行目は /1/ と入力した際に index.php?page=1にアクセスする記載



パラメータが2つの場合


Before
http://www.example.co.jp/index.php?page=1&category_id=2

After
http://www.example.co.jp/1/2/
もしくは
http://www.example.co.jp/1/2

記述例

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/$ index.php?page=$1&category_id=$2 [L]
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/$ index.php?page=$1&category_id=$2 [L]


解説

1行目でmod_rewriteのリライトを使う宣言
2行目、3行目は実在するファイルやディレクトリにはリダイレクトを適用しない旨。
4行目は /1/2 と入力した際に index.php?page=1&category_id=2にアクセスする記載
5行目は /1/2/ と入力した際に index.php?page=1&category_id=2にアクセスする記載



末尾の[L]は
パターンに一致した場合、このルールで、Rewrite 機能による変換を打ち切ります。
続くルールは適用されなくなることをあらわしています。

0 件のコメント:

コメントを投稿

関連時事

人気の投稿