mod_rewriteでwwwの有無をwwwなしに合わせる

これまで、www.fakelife.infoでもfakelife.infoでもアクセスできます。
検索エンジン対策(いわゆるSEOか)などのために、wwwなしに統一しようとおもった。

知人も利用しているので、DNSでwwwを無効にするっていうのはできない。
wwwありで告知している人もいるだろうし、検索エンジンにもwwwありで登録されていたりするだろうし。
まぁアクセスできれば特に問題はないだろう。

空でURLを入力するときには、wwwつける人、つけない人がいるらしいので、両方でアクセスできたほうが良いだろうっていうのもある。
もっとも、このblogは再開して間もないし、有益なことが書いてあるわけでもないので、時間が経過してもどれだけアクセスがあるのかは疑問だけど(苦笑
さて、サーバはDebian GNU/Linux Etchを利用している。
そこでまず、mod_rewriteモジュールを有効にしないといけない。

#a2enmod mod_rewrite


このコマンドでmod_rewriteを有効化。
次に、リダイレクトさせる設定を記述する。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www\.fakelife\.info
    RewriteRule ^/(.*)$ http://fakelife.info/$1 [R=301,L]
</IfModule>


備忘録として内容の解説を書いておく

<IfModule mod_rewrite.c>
</IfModule>

これは念のために mod_rewrite が有効な場合のみ有効な設定記述ですってこと。

    RewriteEngine on

これはRewriteを有効にする

    RewriteCond %{HTTP_HOST} ^www\.fakelife\.info

プログラミング言語でいうところの IF にあたる。
環境変数 {HTTP_HOST} の内容が、先頭から www.fakelife.info なら真ってこと。
真の場合は次のが実行される。

    RewriteRule ^/(.*)$ http://fakelife.info/$1 [R=301,L]

これは URL の www.fakelife.info/ の後、末尾までを正規表現でマッチングし、
http://fakelife.info/ の後にマッチングした内容をつけて、リダイレクトさせる。

[] の中身については、
R がリダイレクト。
R= の後のは返すコードを指定する。
R だけだと、302 (MOVED TEMPORARILY) を返す。
これだと一時的に移動しましたってことになるのかな。
今回は 301 を返すようにしている。これは永続的に移動しましたってことになる。

L はLast Rule の L。
この条件に当てはまったら、そこで処理を終了する。
今回はなくても大丈夫なんだろうけど、念のために記述しておいた。

今回はやらなかったけど、他にやるとしたら、RewriteLog ディレクティブと  RewriteLogLevel ディレクティブかな。
Rewrite したときの ログファイルの場所の指定と、ログをどのレベルで残すかって指定ですね。

参考文献
Apache Module mod_rewrite apache.org の apache 2.2 マニュアルの mod_rewrite の項目
カテゴリ: ,

関連する記事

この記事に関連する記事は、0 件です。

トラックバック

このブログ記事に対するトラックバックURL
http://fakelife.info/mt/system/mt-tb.cgi/14

コメントする


画像の中に見える文字を入力してください。