8673

サイト移行時に301リダイレクトできない場合の2つの対処法

「サイトを移行を外部サーバに設置して、旧サイトから301で転送させて引き継ぎを行いたいけど、リダイレクトできない!」

本記事では、301リダイレクト設定がうまくいかない人に、簡単に301リダイレクトを設置できる方法を2つご紹介します。

301リダイレクトできない例

  • ホームページビルダーやその他のCMSを使い、ワードプレスに移行したが、固定記事や新規記事が投稿できない場合
  • 記事がテーマ内の PHP として存在する場合
  • 編集画面は空白のままなのにもかかわらず、記事が存在する場合

上記は .htaccess に記述しても転送されない可能性があります。

その他一番多い例として下記が挙げられます。

.htaccess は CSS と違い、一番上の記述文が反映される

#SITEGUARD_PLUGIN_SETTINGS_START
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_START
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteRule ^wp-signup\.php 404-siteguard [L]
    RewriteRule ^wp-activate\.php 404-siteguard [L]
    RewriteRule ^login_87642(.*)$ wp-login.php$1 [L]
</IfModule>
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_END
#SITEGUARD_PLUGIN_SETTINGS_END
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

↓これは間違い
<IfModule mod_rewrite.c>
RewriteRule ^(.*)$ https://リダイレクト先.com/$1 [R=301,L] 
</IfModule>
# END WordPress

上記はXserverでワードプレスを導入した時の .htaccess です。

CSSでカスタマイズしている人が多く間違えます。

CSSでは一番下部に記述してあるCSSコードが反映されるのに対して、.htaccess は、上部に記述した文字が反映されます。

#SITEGUARD_PLUGIN_SETTINGS_START
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_START
<IfModule mod_rewrite.c>
RewriteRule ^(.*)$ https://リダイレクト先.com/$1 [R=301,L] 
</IfModule>
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteRule ^wp-signup\.php 404-siteguard [L]
    RewriteRule ^wp-activate\.php 404-siteguard [L]
    RewriteRule ^login_87642(.*)$ wp-login.php$1 [L]
</IfModule>
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_END
#SITEGUARD_PLUGIN_SETTINGS_END
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

301リダイレクトの設定をするなら、このように反映させたい記述文を上部に記述しましょう。

head タグ内に直接記述する

<head>
...
<meta http-equiv="refresh" content="0; URL=https://転送先.com/hogehoge/" />
<link rel="canonical" href="https://転送先.com/hogehoge/" />
...
</head>

<head>内に記述するパターンもあります。

この場合、リダイレクトチェックツールで転送元を計測すると、200で返ってきますが、content="0; で0秒に設定しているので、301リダイレクトと同じ効果です。

また保険として、canonical 属性で URL の正規化をしているので安心です。

しかし、さくらレンタルサーバなど表示速度が遅い場合は一瞬だけ閲覧可能な状態になります。

参考記事
リダイレクト設定によるURLの転送方法

コメント

タイトルとURLをコピーしました