ひとつのWordPressで複数ドメイン&WordPress外で個別のコンテンツも動かす

えーっとやっていることがとてもややこしく、検索でたどり着けるような記事を書けるか自信がないのですが。

・ひとつのWordPressで複数サイト/ドメインを運用している

・ドメインごとに特定URLへのアクセスはWordPress外の別コンテンツとしてアクセスさせたい

といったことを実現する方法です。

 

例をあげると、ひとつのWordPressで運用されているドメイン

http://hoge.com/、 http://hage.net/

があり、そのうえでWordPressとしては同一のサブディレクトリへのアクセスになる

http://hoge.com/test/、  http://hage.net/test/

をWordPress外のそれぞれ独立したコンテンツとしてアクセスさせるやり方です。

 

WebサーバがApacheの場合、実装はこうなります。パスはあくまで一例です。

 

マルチサイト/マルチドメイン化されたWordPressのDocumentRootが

/data/domains/wordpress/htdocs

の場合、hoge.com、hage.netのドキュメントルートはWordPressと一緒になります。

 

・共通

DocumentRoot="/data/domains/wordpress/htdocs"

 

さらに各ドメインでWordPressの外で個別コンテンツを持つため、Aliasを使ってWordPressの外の領域を用意します。

ここではhttp://hoge.com/c/、http://hage.net/c/を個別コンテンツ用の仮URLとします。

httpd-vhosts.confの設定はこんなかんじになります。

・hoge.com

DocumentRoot="/data/domains/wordpress/htdocs"
Alias /c "/data/domains/hoge.com/htdocs"

・hage.net

DocumentRoot="/data/domains/wordpress/htdocs"
Alias /c "/data/domains/hage.net/htdocs"

 

これで

http://hoge.com/c/test/は/data/domains/hoge.com/htdocs/test
http://hage.net/c/test/は/data/domains/hage.net/htdocs/test
それ以外のhttp://hoge.com/*、http://hage.net/*はマルチ化されたWordPressを見るようになります。

 

あとはWordPressの.htaccessにhttp://domain/test/へのアクセスを実体があるhttp://domain/c/test/に書き換える設定をすれば完成。

WordPressにジャマされて404にされても困るので、順番的にははじめのほうに書いた方がよさそうです。

リクエストされたものがWordPressのほうに存在せず、個別コンテンツの方に見つかったら/c/を付加するかんじです。

・/data/domains/wordpress/htdocs/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond /data/domains/%{HTTP_HOST}/htdocs/%{REQUEST_URI} -f [OR]
RewriteCond /data/domains/%{HTTP_HOST}/htdocs/%{REQUEST_URI} -d
RewriteRule ^(.+)$ /c/$1 [L]
</IfModule>

DirectoryIndexがらみで不具合がみつかったので修正

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^\/index.(php|s*html*)$
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond /data/domains/%{HTTP_HOST}/htdocs/%{REQUEST_URI} -f [OR]
RewriteCond /data/domains/%{HTTP_HOST}/htdocs/%{REQUEST_URI} -d
RewriteRule ^(.+)$ /c/$1 [L]
</IfModule>

 

これをクリアできたらもうwww.dgmu.infoの移行も終わったようなもの!

1件のコメント

コメントは受け付けていません。