自分の会社のサーバはちょっとした仕様で、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がいいとか、
サーバリソースが十分じゃないとサーバが飛びます。。。
使う際は自己責任のもとご注意を。
0 件のコメント:
コメントを投稿