TOPICS
トピックス
htaccessによるリダイレクト設定
Webサイトを公開する際に、新規公開する場合を除いては、htaccess(エイチティーアクセス)によるリダイレクト設定をする必要があります。特に旧サイトと新サイトのディレクトリ構造が違う場合やディレクトリが変更になっている場合は、必ず設定しましょう。リダイレクトを設定することで、旧URLのSEO評価を新URLに引き継ぐことができたり、無効になってしまったgoogle等のインデクスを新サイトに飛ばしたり、無効になったファイルから新サイトのトップページに飛ばす事ができます。
私が最近、公開したサイトで少々コツが必要な箇所があったので、備忘録として書いておこうと思います。
haccessファイルとは
そもそもhaccessファイルとは.haccessというファイルをサーバーに設置することで、設置したディレクトリごとにサーバー制御を追加することができるファイルになります。ApacheをはじめとするほとんどのWebサーバーに対応しています。.haccessが使用できるかどうかは、サーバー情報を確認するか、サーバー管理者に問い合わせておくと良いでしょう。もし.haccessが利用できないサーバーをお使いでしたら、サーバー移転をお勧めします。
htaccessファイルの設置方法
haccessファイルはサイトのindex.htmlファイルやindex.phpが設置してあるホームディレクトリ階層に設置します。通常では不可視ファイルになっていて、見ることができませんが、FTPソフト等で、不可視ファイルを表示する設定にすると見ることができる様になります。

.htaccessファイルは不可視ファイルになっているので、そのままダウンロードしてもPC上で見る事が出来ないので(やり方はありますが)FTP上でファイル名を.htaccess→htaccess.txtに変換してからダウンロードすると良いでしょう。
上記のFTPはWordpressサイトを例にしているので、Wordpressの.htaccessファイルをダウンロードすると下記の様な内容になっています。
Wordpressにリダイレクトを追加する場合は、# BEGIN WordPressの上に情報を追加します。
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
301リダイレクト
旧サイトから新サイトにリダイレクトをさせる場合は基本的に301リダイレクトを使います。301リダイレクトと302リダイレクトは転送の期間が異なります。301リダイレクトは恒久的な転送に使い、302リダイレクトは一時的な転送に使います。
尚、Googleも公式で、301リダイレクトを「Google 検索とユーザーを確実に正しいページに導くための最善の方法」として推奨している様です。
リダイレクトの書き方
実際の書き方を例にとって説明していきます。
下記の部分は定型になり、RewriteEngine on 以降に301リダイレクトを書いていきます。
<IfModule mod_rewrite.c>
RewriteEngine on
</IfModule>
例えば、静的なHTMLページから、ディレクトリトップのindex.phpやindex.htmlに飛ばしたい場合は
RewriteRule ^about/about.html(.*)$ /about/$1 [R=301,L]
の様な書き方をします。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^about/about.html(.*)$ /about/$1 [R=301,L]
RewriteRule ^company/company.html(.*)$ /company/$1 [R=301,L]
RewriteRule ^recruit/recruit.html(.*)$ /recruit/$1 [R=301,L]
RewriteRule ^pdf/fuhitsuyou.pdf(.*)$ https://www.xxxxx.co.jp/$1 [R=301,L]
RewriteRule ^company/iranai.html(.*)$ https://www.xxxxx.co.jp/$1 [R=301,L]
</IfModule>
最終的には以下の様な形になります。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^about/about.html(.*)$ /about/$1 [R=301,L]
RewriteRule ^company/company.html(.*)$ /company/$1 [R=301,L]
RewriteRule ^recruit/recruit.html(.*)$ /recruit/$1 [R=301,L]
RewriteRule ^pdf/fuhitsuyou.pdf(.*)$ https://www.xxxxx.co.jp/$1 [R=301,L]
RewriteRule ^company/iranai.html(.*)$ https://www.xxxxx.co.jp/$1 [R=301,L]
</IfModule>
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress