ホームページを301リダイレクト!

Updated:


今日は、HTTPでのある特定のページへのアクセスを自動的に別のページにリダイレクトする方法です。 例: [ http://www.hogehoge.com/index.php/ ]へアクセスしたら自動で [ http://www.hogehoge.com/rails/ ]にリダイレクトする。

Apache2の「httpd.conf」ファイルで設定できます。 ちなみに、この手のリダイレクトには「301」と「302」があります。

  • 「301」は永久的に転送する(ホームページのURLが永久的に変更になった)場合
  • 「302」は一時的に転送する(ホームページのメンテ中などの一時的な)場合

※別に一時的な転送でも「301」を使用してもよいと思いますが。。。

作業記録

【前提条件】 ・サーバOSはCentOS ・WebサーバはApache2.2 ・今回はPHPで運用していたものを「Ruby on Rails」に移行

1.「mod_rewrite」の有効化

Apache設定ファイル「/etc/httpd/conf/httpd.conf」を以下のように編集する。

# vi /etc/httpd/conf/httpd.conf
 :
↓↓コメント化されていればコメント化を解除
LoadModule rewrite_module modules/mod_rewrite.so
 :

2.「mod_rewrite」の有効化

同じくApache設定ファイル「/etc/httpd/conf/httpd.conf」を以下のように編集する。 (一例です)

# vi /etc/httpd/conf/httpd.conf

↓↓適当な場所に以下を追加
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteLog "logs/rewrite_log"
    RewriteLogLevel 0
    RewriteRule ^/$               /rails/            [R=301]
    RewriteRule ^/index.php$      /rails/            [R=301]
    RewriteRule ^/profile.php$    /rails/profile/    [R=301]
    RewriteRule ^/blog_cat.php$   /rails/blog/cat/   [R=301]
    RewriteRule ^/blog_month.php$ /rails/blog/month/ [R=301]
    RewriteRule ^/loto6.php$      /rails/loto6/      [R=301]
    RewriteRule ^/mycars.php$     /rails/mycars/     [R=301]
    RewriteRule ^/webcam.php$     /rails/webcam/     [R=301]
    RewriteRule ^/archives.php$   /rails/archive/    [R=301]
    RewriteRule ^/link.php$       /rails/link/       [R=301]
    RewriteRule ^/contact.php$    /rails/contact/    [R=301]
</IfModule>

  • RewriteEngine On rewriteを有効にする。
  • RewriteLog “logs/rewrite_log” rewrite動作のログファイル指定。
  • RewriteLogLevel 0 rewriteのログレベル指定。[1] にすると膨大なログが出るので、デバッグが終わったら [0] にする。
  • RewriteRule 必要な分を1行づつ記述していくが、基本は正規表現でマッチングをとり、一致したものがrewriteされる。

※「httpd.conf」の設定方法の詳細についてはあらゆるサイトで紹介されていますので割愛します。

3.Apache の再起動

Apacheを再起動する。

# service httpd restart

作業は以上です。

そして、密かに「Ruby on Rails」への移行作業を行っていた当方のホームページもこの際に移行しました。 → 「mk−mode SITE

ではまた。





 

Sponsored Link

 

Comments