問題
ドメイン変更にあたり、サイト全体の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