サブドメインで同じ処理をする場合の構成について教えてください。


今多言語サイトを制作中でトップページは以下のような
ディレクトリ構成になっています。

日本語版:/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");
?>

として日本語版のファイルをそのまま読み込み、出力時に切り分けて
表示しようと考えておりますが、いまいちスマートさに欠けるように
思われます。

こういった場合はどのように処理を共有するのが一般的なのでしょうか?
ご教授のほど宜しくお願い致します。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2013/12/07 12:51:22
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:papa-tomo No.1

回答回数362ベストアンサー獲得回数107

ポイント100pt

require_onceを使うなら、http.confかhttpacessファイルを使って、メイン・サブドメインともに同じindex.phpにリクエストが行くようにしたらどうでしょうか。index.php側でメインかサブのどちらのリクエストなのか判断して処理すれば良いのではないでしょうか。

他1件のコメントを見る
id:papa-tomo

とりあえず

RewriteEngine 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/06 23:06:07
id:gelgelgel

度々ご回答有難うございます。

↓こちらの方法で無事設定することができました。
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>

2013/12/07 12:51:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません