今多言語サイトを制作中でトップページは以下のような
ディレクトリ構成になっています。
日本語版:/var/www/xxx.com/index.php
英語版:/var/www/en.xxx.com/index.php
ほぼ同じ処理を行うため英語版の「/var/www/en.xxx.com/index.php」では
<?php
require_once("/var/www/xxx.com/index.php");
?>
として日本語版のファイルをそのまま読み込み、出力時に切り分けて
表示しようと考えておりますが、いまいちスマートさに欠けるように
思われます。
こういった場合はどのように処理を共有するのが一般的なのでしょうか?
ご教授のほど宜しくお願い致します。
require_onceを使うなら、http.confかhttpacessファイルを使って、メイン・サブドメインともに同じindex.phpにリクエストが行くようにしたらどうでしょうか。index.php側でメインかサブのどちらのリクエストなのか判断して処理すれば良いのではないでしょうか。
とりあえず
2013/12/06 23:06:07RewriteEngine on
RewriteRule ^/http\://en.xxx\.com/index.php$ /var/www/xxx.com/index.php [R,L]
かな・・・
もしくは
RewriteEngine on
RewriteRule ^/http\://en.xxx\.com/index.php$ /var/www/xxx.com/index.php?lang=en [R,L]
とか・・・
詳しくは説明しないけど、見ていただければ多分分かるかと思います。
ポイントは英語の方を日本語と共有化すればよいので、英語の方だけRewiteすればOKということですね。
ちなみにGETリクエストのパラメータをrewiteするのは難しいのでパラメーターが必要なら、URLエイリアスにすることをお勧めします。
RewriteRule ^/http\://en.xxx\.com/index-php.pram=(.*)$ /var/www/xxx.com/index.php?pram=$1 [R,L]
RewriteRule ^/http\://en.xxx\.com/php(.*)\.html$ /var/www/xxx.com/index.php?pram=$1 [R,L]
とかね。もしくはPOSTで送信。
mod_rewiteは慣れるととても便利だと思います。
度々ご回答有難うございます。
2013/12/07 12:51:10↓こちらの方法で無事設定することができました。
RewriteEngine on
RewriteRule ^/http\://en\.xxx\.com/index.php$ /var/www/xxx.com/index.php [R,L]
大変勉強になりました。ありがとうございました。
※以下メモです。
============================================================
最終的には以下のようにしました。
RewriteEngine on
RewriteRule ^/http\://en\.xxx\.com/(.*?)$ /var/www/xxx.com/$1 [R,L]
またサブドメインは以下バーチャルホストで設定して
「/var/www/xxx.com/en/」に変更しました。
http://blog.mosuke.me/?p=4
文中の↓以下も追記しないと.htaccessが動かなるので注意です。
<Directory "/www/otherdomain">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>