Syntax Error.

[Sy] Debian/Apacheのconfファイルで301リダイレクトをさせる方法

2016/04/10

Debian/Apacheのconfファイルで 301リダイレクト をさせる方法です。旧サイトがApacheだったので今回のリニューアルの際に行ってます。

サイトのリニューアル時とかに使う

4月1日にサイトをリニューアルしました が、旧サイトがApacheのVirtualHostで動いてたので、confファイルをいじって301リダイレクトをさせるようにしています。

301という数字について

HTTPではサーバからHTMLのテキスト情報だけでなく、ステータスコード(or レスポンスコード)というものが送られてきます。この「301」という数字もその一つで、「恒久的な移動」を意味します。なので、このコードを受け取ったブラウザ側は、「あ、ページが新しいURLに移動したんだ」と知ることができます。(自動でリダイレクトされます)また、正常時は「200」、何も見つからなかった場合は「404」などが返ってきます。

あとURLもwwwを消したりHTTPSに対応したりしたので、以下のようにリダイレクトさせたいです。

(旧) http://www.utano.jp/entry/xxxx/xx/xxxxxxx
 ↓
(新) https://utano.jp/entry/xxxx/xx/xxxxxx

設定方法

今回のぼくの場合は、Debianなので修正するファイルは/etc/apache2/sites-available/wwwというwww.utano.jpのVirtualHostの設定をしているファイルになります。

CentOSの場合は、/etc/httpd/conf.d/配下あたりとかにあると思います。(設定者によるので、だいたいですが、とにかくリダイレクトさせたいサイトの設定を探してください)

で、設定する内容ですが、まず元のファイルがこんな感じ。

<VirtualHost *:80>
  ServerName www.utano.jp
  DocumentRoot /var/www/www/public/

  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>

  <Directory /var/www/www/public/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride ALL
    Order allow,deny
    allow from all
    setEnv FUEL_ENV development
  </Directory>

    ・
    ・
    ・

</VirtualHost>

これを、ServerName以外ガッと消して、1行加えます。

<VirtualHost *:80>
  ServerName www.utano.jp
  Redirect permanent / https://utano.jp/  ← 追加
</VirtualHost>

Redirect permanentが301リダイレクトにしてくれます。(Redirect tempとすると302(一時的な移動)となるようです)

その後の/は、http://www.utano.jp/とうURLに対応しているので、

http://www.utano.jp/以下のURLをすべてhttps://utano.jp/以下の対応するURLに301リダイレクトしてね。」

という設定になります。

これで、Apacheのconf再読み込みをして完了です。

$ sudo service apache2 reload
Reloading web server config: apache2.

CentOS6以下ならこうですね。

$ sudo service httpd reload

ついでにCentOS7だとたぶん

$ sudo systemctl reload httpd

ですかね?(試してない)

参考URL

この記事を参考にさせていただきました。ありがとうございます!

⇒ apache設定ファイルでの301リダイレクトの設定方法 | AC-5

こちらはCentOSっぽいですね。CentOSの方は見てみるとより分かるかと思います。