2012-03-21 4 views
0

私は複数の顧客にサービスを提供するPHPアプリケーションを持っています。コードはドメインのルートに配置され、すべての顧客に共有されます。各顧客は、クエリ文字列パラメータ "id"を使用して、そのページにアクセスできます。マルチクライアントアプリケーション用mod_rewrite espression

私はPHPのルーティングスクリプトを通してそれを行うには「より良い方法mod_rewriteを介して、このルーティングを達成するためにどのようなアドバイスやサンプルコードが必要か:

ホームページ

www.example.com/customerA --> www.example.com/customerA/main?id=1 
www.example.com/customerB --> www.example.com/customerB/main?id=4 

注: "メイン "はファイル拡張子を表示しないファイルmain.phpです。 顧客のサブフォルダは実際のサブフォルダではありません。は次のように追加のパラメータを使用している

インナーのページは:

www.example.com/customerA/page1?id=1&par1=5 

サーバ側上のすべての書き換えは、仮想サブフォルダなしwww.example.com/main?id=4 として解釈されるべきです。

ありがとうございました。ここで

答えて

0

が動作するはず何:

RewriteRule ^/customerA /customerA/main?id=1 [QSA,NC,R=301,L] 
RewriteRule ^/customerB /customerB/main?id=4 [QSA,NC,R=301,L] 

RewriteRule ^/(customer(A|B))/main /main [QSA,NC] 

は、今では私はあなたの質問に正確に答えてきたのです、私はそれはあなたが望むものではないかなり確信しています。 多くのお客様がいる場合は、映画についての質問であるhereという巨大な回答をしましたが、それは顧客に関するものですが、原理はまったく同じです。


あなたがより一般的になりたい場合は、次の

# if URL is not a real file... 
RewriteCond %{SCRIPT_FILENAME} !-f 
# if URL is not a real folder... 
RewriteCond %{SCRIPT_FILENAME} !-d 
# ...and if adding "php" points to a real file... 
RewriteCond %{SCRIPT_FILENAME}.php -f 
# ...then rewrite internally with "php" extension: 
RewriteRule (.*) $1.php [QSA,NC] 

・ホープ、このことができます。

+0

私は多くの顧客を持っていないので、pricipleはOKです。しかし、それは望むように動作していないようです。私は使用されたPHPファイルのためのより動的な書き換えルールを使用したいと思います。これで、実際にmain.phpである "main"がエンコードされました。ルール内の* .phpファイルを使用する方法はありますか? – Erik

+0

私の答えを変更しました。希望はこれでいいです** ';)' ** –