1

数日間ウェブ全体を検索しましたが、質問に対する回答が見つかりませんでした。これは私がやりたいことです:

私のサイトのすべてのユーザーは、http://username.domain.comのような個人用サブドメインを受け取ります。もちろん、これは仮想サブドメインです。

今、私はすでにワイルドカード DNS A レコードを設定し、mod_rewrite を ON にして、これを行うことを達成しました:

誰かが http:// anysubdomain.domain.com にアクセスすると、http:// www.domain.com/sub/index.php?var=anysubdomain にリダイレクトされます。index.php には、「var」変数 (サブドメインの名前) に基づいて一意の情報を取得する関数があります。

私がやりたいのは、誰かが http:// anysubdomain.domain.com にサーフィンしているときに、 http:// www.domain.com/sub/index.php?var=anysubdomain にリダイレクトされることです (現在のように)。元の URL (http:// anysubdomain.domain.com) はブラウザ バーに保持されます。したがって、すべてのユーザーが独自のサブドメインを持っているように見えます。

これは私が現在使用している htaccess ファイルです。

RewriteEngine On 
Options +FollowSymlinks 


RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteCond %{HTTP_HOST} !^static\.domain\.com
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)\.domain.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/sub/index.php?username=%2 [L]

そうでない場合は、すべてが明確であることを願っています。質問して、より多くの情報を提供してください!

前もって感謝します!

百合

4

1 に答える 1

0

http://www.domain.comすべてのサブドメインとメイン ドメインが同じドキュメント ルートを共有している限り、ルールから少しだけ取り除くことができます。

RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteCond %{HTTP_HOST} !^static\.domain\.com
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)\.domain.com$ [NC] 
RewriteRule ^(.*)$ /sub/index.php?username=%2 [L]

Pそれ以外の場合は、フラグを追加して mod_proxy を使用する必要があります。

RewriteCond %{HTTP_HOST} !^www\.domain\.com
RewriteCond %{HTTP_HOST} !^static\.domain\.com
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)\.domain.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/sub/index.php?username=%2 [L,P]

ただし、最初の方法の方がはるかに効率的です。

于 2012-10-14T04:21:56.377 に答える