0

ワイルドカードサブドメイン(ServerAlias * .mydomain.com)を使用して、すべてのサブドメインリクエストをキャッチし、ブラウザに「偽の」URLを保持し、サブドメイン(都市名)をURLパラメータとして渡してホームページにリダイレクトします。

サブドメインフォルダの.htaccess:

<IfModule mod_rewrite.c>
 Options +FollowSymLinks
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
 RewriteRule ^(.*)$ http://%2.%3/index.php?city=%1 [P,L]
</IfModule>

問題:すべてのページ(register.php、login.php、contact.php)にいくつかのリンクがあるメニューがあり、1つのサブドメインにいるときにそれらのいずれかを選択すると、リクエスト(city.mydomain.com/login)が表示されます。たとえばphp)は条件/ルールによってキャプチャされます

条件/ルールの2番目のセットを追加する必要があると思いますが、いくつかのテストの後、正しいものを見つけることができません。すでに機能しているものの前にこれを追加しました:

 RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
 RewriteCond %{REQUEST_URI} ^/(.*)\.php$ [NC]
 RewriteRule ^(.*)$ http://%2.%3/%4 [P,L]

エラーの受信:

悪いゲートウェイ!プロキシサーバーがアップストリームサーバーから無効な応答を受信しました。プロキシサーバーはリクエストGET/register.phpを処理できませんでした。

理由:DNSルックアップの失敗:

これがサーバーエラーであると思われる場合は、ウェブマスターに連絡してください。

エラー502city.domaim.com

CentOS5Parallelsスモールビジネスパネル10.2.0

前もって感謝します

4

2 に答える 2

0

mod_rewriteを使用すると、これが複雑になりすぎる可能性があります。サブドメイン(都市)を解析/検証し、ストレートPHPで定数を設定することをお勧めします。たとえば、config/initファイルにあります。最終的には、特に検証の場合に、サブドメインをはるかに細かく制御できるようになります。

キス:)

于 2011-08-23T01:21:16.087 に答える
0

エラーは素朴なもので、RewriteCond パターン (%N) への置換文字列の後方参照が最後に一致したものを参照していることを見落としていました。次に、私の元のルールでは、%2、%3、および %4 は意味がありませんでした

.htaccess の動作は次のとおりです。

<IfModule mod_rewrite.c>
 Options +FollowSymLinks
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
 RewriteCond %{REQUEST_URI} ^/(.*)\.php$ [NC]
 RewriteRule ^(.*)$ http://mydomain.com/%1.php [P]
 RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
 RewriteRule ^(.*)$ http://%2.%3/index.php?city=%1 [P]
</IfModule>

また、[P] フラグは [L] を意味します。

レッスン: RTFM! :-)

于 2011-08-23T12:16:25.827 に答える