0

単一のドメインを使用して、単一のWebホスティングにTEST、CERT、およびPRODのWebページを実装したいと思います。Webサイトは、最初のサブドメインにワイルドカードを使用しています。

私は次のコードを持っています:

# for TEST
RewriteCond %{HTTP_HOST} (.*).test.domain.com
RewriteCond %{REQUEST_URI} !^/directory3
RewriteRule ^(.*)$ /directory3/$1 [L]

# for CERT
RewriteCond %{HTTP_HOST} (.*).cert.domain.com
RewriteCond %{REQUEST_URI} !^/directory2
RewriteRule ^(.*)$ /directory2/$1 [L]

# for PROD
RewriteCond %{HTTP_HOST} (.*).domain.com
RewriteCond %{REQUEST_URI} !^/directory1
RewriteRule ^(.*)$ /directory1/$1 [L]

これには3つの問題があります:
1)ユーザーが新しいURLを見ることができるように、ブラウザのアドレスバーでURLが変更されます。ユーザーに元のタイプのURLを表示してもらいたい

http:\\subdomain1.cert.com\directory2

それ以外の:

http:\\subdomain1.cert.com

2) TESTおよびCERTリライトにはがありInternal Server Errorます。
固定サブドメインのワイルドカードを置き換えると正常に機能します

3) PROD RweriteCondは常に有効です(CERTおよびTESTサブに対しても有効です。これは、ディレクトリ1に常に転送されることを意味します。

4

1 に答える 1

1

ルールは互いに干渉しています。ホスト:(.*).domain.com証明書およびテストホストとも一致するため。「PROD」ルールでそれらを除外する必要があります。

RewriteCond %{HTTP_HOST} !test.domain.com
RewriteCond %{HTTP_HOST} !cert.domain.com
RewriteCond %{HTTP_HOST} (.*).domain.com
RewriteCond %{REQUEST_URI} !^/directory1
RewriteRule ^(.*)$ /directory1/$1 [L]

これにより、#2と#3が解決されます。リダイレクトされることに関しては、それは別のことです。これらのルールはhttp://、ターゲットにが含まれていないかR、角かっこで囲まれていない限り、ブラウザをリダイレクトしません。

于 2012-07-27T19:08:58.613 に答える