公開フォルダ直下にドメイン切り替えのhtaccsess(.comから.co.jp)を作ったが上手くいかない
WordPressがサブディレクトリにあり、サブディレクトリ内のhtaccsessでルートのURLに飛ばしている
どうしたらいいか
構成の確認
www/
.htaccess ← ここに301を置きたい
example.com/ ← .comドメインの公開ディレクトリ
wp/
.htaccess
example.co.jp/ ← .co.jpドメインの公開ディレクトリ
wp/
.htaccess
重要な問題点
この構成では、www/直下の.htaccessは動作しません。
理由:
- サーバー設定で
example.comの公開ディレクトリがwww/example.com/に設定されている - そのため、
www/.htaccessは読み込まれず、www/example.com/.htaccessが最初に読み込まれる
解決策
方法1:各ドメインディレクトリ内に設置(推奨)
www/example.com/.htaccess(.comドメイン側)
RewriteEngine On
# .comから.co.jpへリダイレクト
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.co.jp/$1 [R=301,L]
www/example.co.jp/.htaccess(.co.jpドメイン側)
RewriteEngine On
# wwwなしをwwwありに統一(必要に応じて)
RewriteCond %{HTTP_HOST} ^example\.co\.jp$ [NC]
RewriteRule ^(.*)$ https://www.example.co.jp/$1 [R=301,L]
# WordPressサブディレクトリからの表示
RewriteCond %{REQUEST_URI} !^/wp/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wp/$1 [L]