2016-05-31 20 views
0
  • 私は$ _SERVERからPHPとサブドメインの変数(製品名および言語)を取得することができています[ "HTTP_HOST"]
  • 私は知らない

http://product.en.example.comモッズ書き換えWilcardサブドメイン - 内部ページ

内部ページ用のブラウザで次のURLを仕事にする方法:

  • product.en.example.com/images
  • product.en.example.com/images/john
  • product.en.example.com/hobbies
  • product.en.example.com/hobbies/smith

画像、趣味=ページタイプ

ジョン・スミス= peopleName

私はPHPのクエリ文字列(GET)を介してページタイプを取得し、対応するレイアウトを果たすべきだと思います。 .htaccessファイルで

私が持っている:

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{REQUEST_URI} !index\.php 
RewriteCond %{HTTP_HOST} ^(.+?)\.(.+?)\.example\.com/$ 
RewriteRule (.+).(.+)\.example\.com\/(.*) /index.php [L] 

答えて

0

これを達成するために、複数の方法があります。まず、リクエストされたURIを含む$_SERVER['REQUEST_URI']を使用してPHPでリクエストuriを解析できます。

代わりに.htaccessファイルを使用することもできます。この場合、あなたも、PHPでのサーバー名を解析する必要はありません。この方法は、あなたがそれらをせずにCSSファイルなどの資産を提供することができますので、私は代わりにindex.phpに対するあなたのチェックのルールRewriteCond %{REQUEST_FILENAME} !-fを追加

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^(.*?)\.?([^\.]+?)\.example\.com$ 
RewriteRule ^([^/]*)?/?(.*?)/?$ /index.php?product=%1&language=%2&pageType=$1&peopleName=$2 [L] 

注意index.phpにリダイレクトされました。

HTTP_HOSTにはスラッシュが付きません。

コメントでrequirestedたようEDIT

:あなたは([^/]*)?/?を使用することができます別のオプションパラメータを追加するために

。したがって、RewriteRuleは次のようになります。

RewriteRule ^([^/]*)?/?([^/]*)?/?(.*?)/?$ /index.php?product=%1&language=%2&pageType=$1&peopleName=$2&peopleAge=$3 [L] 
+0

希望するとおりに動作するようです。私はまた、最初のパラメータ(製品)のないカテゴリにいくつかのURLを持っていることを忘れていました。私はオプションのポイントを作ろうとしました。言語の前に\。?または(\。)?しかし、このURLは404.thanksを与える en.example.com/cat/catName – AndreiD

+0

あなたの新しい要件を反映するために私の答えを更新しました。 –

+0

正常に動作します。最後に別のオプションのパラメータを追加しようとしましたが、クエリ文字列には表示されません。たぶん私はいくつかのパラメータを持つURLを持っています。このRewriteRule ^([^ /] *)?/?(。*?)/(。*?)?/?$ /index.php?product=%1&language=%2&pageType=$1&peopleName=$2&peopleAge=$3 [L] – AndreiD