問題
ドメイン変更にあたり、サイト全体のURLに301リダイレクトをかけようとしましたが、topページしかリダイレクトがかからず悩みました。
# 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 # Custom Redirects RewriteCond %{HTTP_HOST} ^www\.old\.com$ [OR] RewriteCond %{HTTP_HOST} ^old\.com$ RewriteRule ^(.*)$ https://new.com/$1 [R=301,L]
状況
WordPressが使用されており、デフォルトで.htaccessにWordPressのリライトルールが記述されていました。
記述する場所
WordPressを使用している場合、注意点があります。
それは追記する場所です。
WordPressのリライトルールより上に記述しましょう。
WordPressのリライトルールより下に記述してしまうと、WordPressのリライトルールと競合してしまいます。
新しく追記するリダイレクトルールが適切な場所に配置されていることを確認しましょう。
# ここに記述していく # 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
# Custom Redirects RewriteCond %{HTTP_HOST} ^www\.old\.com$ [OR] RewriteCond %{HTTP_HOST} ^old\.com$ RewriteRule ^(.*)$ https://new.com/$1 [R=301,L] # 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