2012年2月16日木曜日

内部proxy用いてwwwを付ける方法(wordpress)

  • このエントリーをはてなブックマークに追加

自分の会社のサーバはちょっとした仕様で、wwwを付けるとmysqlが使えない。
実際にホームとかはwwwついてるので
どうにかwwwつけてwordpressインストールしたいなぁと思ったりしたけど
ちょっと厳しいので、apacheのmod_rewrite使ってwww付けることにした!



単純にmod_rewriteするときのRewriteRuleにwwwを付ければいいってことだと思ったけど、
rewriteするってことはリダイレクトするわけで。
見事にwwwを付けてアクセスしたのと同じになってしまった。

ということで内部proxy経由させればうまく出来るんじゃない?ってことで試してみた。
そのコードがこちら↓

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{HTTP_HOST} ^www\.hoge\.com
RewriteRule (.*) http://hoge.com/wp/$1 [P]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>
# END WordPress

RewriteRuleを記述する際に[P]オプションを付けてあげることで、
内部proxy経由で第二引数のURLにリクエスト送るよってことになる。

ということでうまくwww付きでデータが表示された。
けどDB内部はwww無しでパーマリンクが保存されているので、
こちらを削除するか、wwwありなしでうまく変更する必要が出てきた

ということでサーバーのホストを正規表現使ってwwwを付けるコードがこちら↓

if(preg_match("/^www/",$_SERVER['HTTP_HOST']))
preg_replace("/(http:\/\/hoge\.com)(.+)/","http://www.hoge.com$2",get_permalink());

↑ちょっとこちらは長ったらしいので、どうしようか悩み中。



---------------追記---------------
こちらの内容はサーバのメモリが多いとか、CPUがいいとか、
サーバリソースが十分じゃないとサーバが飛びます。。。
使う際は自己責任のもとご注意を。

Adsense