mod_rewriteでwwwの有無をwwwなしに合わせる
これまで、www.fakelife.infoでもfakelife.infoでもアクセスできます。
検索エンジン対策(いわゆるSEOか)などのために、wwwなしに統一しようとおもった。
知人も利用しているので、DNSでwwwを無効にするっていうのはできない。
wwwありで告知している人もいるだろうし、検索エンジンにもwwwありで登録されていたりするだろうし。
まぁアクセスできれば特に問題はないだろう。
空でURLを入力するときには、wwwつける人、つけない人がいるらしいので、両方でアクセスできたほうが良いだろうっていうのもある。
もっとも、このblogは再開して間もないし、有益なことが書いてあるわけでもないので、時間が経過してもどれだけアクセスがあるのかは疑問だけど(苦笑
検索エンジン対策(いわゆるSEOか)などのために、wwwなしに統一しようとおもった。
知人も利用しているので、DNSでwwwを無効にするっていうのはできない。
wwwありで告知している人もいるだろうし、検索エンジンにもwwwありで登録されていたりするだろうし。
まぁアクセスできれば特に問題はないだろう。
空でURLを入力するときには、wwwつける人、つけない人がいるらしいので、両方でアクセスできたほうが良いだろうっていうのもある。
もっとも、このblogは再開して間もないし、有益なことが書いてあるわけでもないので、時間が経過してもどれだけアクセスがあるのかは疑問だけど(苦笑
さて、サーバはDebian GNU/Linux Etchを利用している。
そこでまず、mod_rewriteモジュールを有効にしないといけない。
このコマンドでmod_rewriteを有効化。
次に、リダイレクトさせる設定を記述する。
備忘録として内容の解説を書いておく
これは念のために mod_rewrite が有効な場合のみ有効な設定記述ですってこと。
これはRewriteを有効にする
プログラミング言語でいうところの IF にあたる。
環境変数 {HTTP_HOST} の内容が、先頭から www.fakelife.info なら真ってこと。
真の場合は次のが実行される。
これは 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 の項目
そこでまず、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 の項目
トラックバック
このブログ記事に対するトラックバックURL
http://fakelife.info/mt/system/mt-tb.cgi/14
コメントする