.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 機能による変換を打ち切ります。
続くルールは適用されなくなることをあらわしています。