mod_rewriteによるURLの統一
mod_rewriteでのURL統一について調べることがあったので、テストも兼ねてこのサイトに導入してみました。
統一方法はググればすぐに出てきたものの、静的ページを前提にしているのかPHPページだと微妙に正しく動かないものが多かったのでメモ。
- http://www.favorite-labo.org/
- http://favorite-labo.org/
- http://www.favorite-labo.org/index.php
- http://favorite-labo.org/index.php
- http://www.favorite-labo.org/page/about
- http://favorite-labo.org/page/about
- http://www.favorite-labo.org/index.php/page/about
- http://favorite-labo.org/index.php/page/about
それぞれ一番上のURLに統一されます。(www
あり。index.php
なし。)設定してあるmod_rewriteは以下のとおりです。すでにfreo用のmod_rewriteを設定している場合、それは削除します。(もしくは、見比べながら加筆します。)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^favorite-labo.org
RewriteRule ^(.*)$ http://www.favorite-labo.org/$1 [R=301,L,NE]
RewriteCond %{THE_REQUEST} ^GET\ .*/index.php
RewriteRule ^(.*)index.php/?(.*)$ http://www.favorite-labo.org/$1$2 [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1 [L]
</IfModule>
URLがこのサイト用なので、各々のサイトに導入する場合は調整が必要です。そのうち、再度色々と検証してからfreoサイトに解説を書くとします。
↑書きました。URLの簡略化(mod_rewrite)について