Error, group does not exist! Check your syntax! (ID: 1)
Webサイトを運営していると、URLの転送が必要になることは多々あります。
その際、
旧URLが持っているGoogleからの評価を引き継いで
転送することができる(悪い評価も引き継ぎます)のが301リダイレクトです。
本記事では、mod_Rewriteを使った301リダイレクトのやり方をご紹介します。
しかし、転送処理を間違えると、
ページが見られなくなるなど大きな問題が発生しえます。
必ずエンジニアなどの技術の分かる人と一緒に対応を行うようにしてください。
WordPressのサイトであれば、
代りに「Redirection」というプラグインを使われると良いでしょう。
1 301リダイレクトの前提条件
301リダイレクトを使うには以下の前提条件があります。
- .htaccessが使えるサーバーであること
- Apache(アパッチ)というウェブサーバーを使っていること
- 「mod_rewrite」という機能をサポートしているウェブサーバーであること(推奨)
下表に各レンタルサーバーの対応状況を一部掲載しておきます。
ご自分のサーバーが対応しているかどうかは、サーバー会社のWebサイトなどに載っているのでそちらで確認してください。
表1-1 mod_rewriteサポート状況
レンタルサーバー | Apache対応 | mod_rewirteサポート |
---|---|---|
さくらインターネット | ◯ | ◯ |
ロリポップ | ◯ | ◯ |
Xserver | ◯ | ◯ |
WADAX | ◯ | ◯ |
2 転送処理の記述
.htaccessファイルの中に、
下記のケースから行いたいサイトのリダイレクトに合わせて
編集した上で保存してください。
作成し保存した.htaccessは、サーバーにアップロードをします。
アップロードするにはFTPソフトを使用します。
.htaccessの有効範囲は、
.htaccessをアップロードディレクトリと、その子階層に対してとなります。
(1)ページ単位のリダイレクト
old.html」にアクセスがあった際に、
http://www.example.com/new.html」へ301リダイレクトさせる記述です。
1 2 3 4 5 |
RewriteEngine on RewriteRule ^old.html$ http://www.example.com/new.html [L,R=301] L 「この処理はここで終わり(LAST)」の意 R=301 「301リダイレクトしなさい」の指定 ※ Rだけだと302リダイレクト |
(2)ディレクトリ単位のリダイレクト
「old」ディレクトリにアクセスがあった際、
「new」ディレクトリに転送をかけたい場合の記述です。
1 2 |
RewriteEngine on RewriteRule ^old(.*)$ /new$1 [L,R=301] |
(3)http→httpsのリダイレクト
HTTPアクセスされたページを、SSLでリダイレクトをする方法です。
SSLを使いたいディレクトリに、以下を記述したファイルを入りします。
GoogleがSSL化を推奨していることもあり、SSL対応を行う人も増えていますが、
この場合もHTTPでのアクセスをHTTPSにリダイレクトしたほうが良いです。
1 2 3 |
RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
SSLでリダイレクトするページを個別で指定する場合
a.htmlとb.htmlというページだけSSLへリダイレクトしたい場合は以下となります。
1 2 3 4 5 6 7 8 9 |
RewriteEngine on RewriteCond %{REQUEST_URI} .*/a.html$ [OR] RewriteCond %{REQUEST_URI} .*/b.html$ RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{REQUEST_URI} !(.*/a.html$) RewriteCond %{REQUEST_URI} !(.*/b.html$) RewriteCond %{HTTPS} on RewriteRule (.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
(4)https→http のリダイレクト
1 2 3 |
RewriteEngine on RewriteCond %{HTTPS} on RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
(5)wwwなしURLを、wwwありURLへリダイレクトする記述
http://example.com/へアクセスがあった際に、
http://www.example.com/へリダイレクトをかける記述です。
こちらはリンクポピュラリティの分散を防ぐという考えもありますので、
どちらかに統一しておいたほうがいいでしょう。
1 2 3 |
RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com RewriteRule ^(.*) http://www.example.com/$1 [L,R=301] |
(6)wwwありURLを、wwwなしURLへリダイレクトする記述
1 2 3 |
RewriteEngine on RewriteCond %{HTTP_HOST} ^www.example\.com RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] |
(7)TOPページのindex.htmlをindex.html無しに統一する記述
1 2 3 |
RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://example.com/$1 [L,R=301] |
Error, group does not exist! Check your syntax! (ID: 2)