keyboard_arrow_up
WordPressサイトの下層でマルチドメインを運営する際の.htaccessの設定 (その2)
visibility_off プライベートURLを表示
すでにWordPress(以下WP)がルートで運用されているレンタルサーバーに、マルチ・ドメインを追加して別サイトを運営する場合の.htaccess(mod_rewrite)の設定について、以前このような方法で暫定的に解決した気になっていました。 https://www.chaordic.co.jp/memorandum/chaordicdesign/40/ とりあえずこれでも動いていたのですが、しかし、この方法だとWPでパーマリンクなどの設定をした際にWPがおこなう **.htaccess** の書き換えに対応できません。 調べてみるともっとスマートな方法がありました。 仮に **domain.com** を親ドメイン、 **sub.domain.com** をマルチ・ドメインとして、ディレクトリの構成はこうなります。 home/ (domain.com)   .htaccess (WPの.htaccess )   index.php   wp/ (WPのディレクトリ)   sub.domain.com/     .htaccess (マルチ・ドメインの.htaccess )     index.html 以前は、ルートの **.htaccess** だけで対応しようとしていましたが、その方法ではWPの書き換えに対応できそうにないので、マルチ・ドメイン配下にも **.htaccess** を置いて、二段階の対応とします。 ### ルートの.htaccess 提示された **.htaccess** の設定を、マルチドメイン、WPの順に記述するだけでOKです。(※「<」「>」は全角です) # -- マルチドメイン設定 # Main RewriteRule for multidomain. <IfModule mod_rewrite.c> RewriteCond %{HTTP_HOST} ^(jrep.st.keio.ac.jp) RewriteCond %{REQUEST_URI} !^/(jrep.st.keio.ac.jp)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L] </IfModule> # BEGIN WordPress # "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は # 動的に生成され、WordPress フィルターによってのみ修正が可能です。 # これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress ### マルチドメインの.htaccess そして、マルチドメインのディレクトリ配下に下記を記述した **.htaccess** を作ります。何をしているかというと、リライトエンジンをオフにして、 このディレクトリ配下で404エラーが発生した場合のリダイレクトを指示してあります。 RewriteEngine Off ErrorDocument 404 /jrep.st.keio.ac.jp/404.html この方がだんぜんスマートです。
ソースコードは自由にお使いください。また、何らかの不利益が生じたとしても一切責任を負いません。
このエントリーについてのお問い合わせ、お仕事のご相談やご依頼など mail_outline
keyboard_arrow_down
settings_ethernet
insert_photo
create
done