31

I'm trying to redirect requests for a wildcard domain to a sub-directory.
ie. something.blah.example.com --> blah.example.com/something

I don't know how to get the subdomain name to use in the rewrite rule.

Final Solution:

RewriteCond %{HTTP_HOST} !^blah\.example\.com
RewriteCond %{HTTP_HOST} ^([^.]+)
RewriteRule ^(.*) /%1/$1 [L]

Or as pointed out by pilif

RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.example\.com$
4

3 に答える 3

36

Apache ドキュメントのURL Rewriting Guideを参照してください。

以下はテストされていませんが、うまくいくはずです:

RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.domain\.com$
RewriteRule ^/(.*)$           http://blah.domain.com/%1/$1 [L,R] 

これは、サブドメインにドットが含まれていない場合にのみ機能します。それ以外の場合は、RewriteCond の Regexp を変更して、アンカーのために引き続き機能するはずの任意の文字に一致させる必要がありますが、これは確かに安全だと感じます。

于 2008-09-08T11:30:27.947 に答える
4

これを試して:

RewriteCond %{HTTP_HOST} (.+)\.blah\.domain\.com
RewriteRule ^(.+)$ /%1/$1 [L]

@pilif(コメントを参照):わかりました、それは本当です。プロジェクトの 1 つで使用する .htaccess をコピーしました。少し異なるアプローチがあると思います:)

于 2008-09-08T11:30:58.617 に答える
1

@サム

RewriteCond 行が間違っています。変数の展開は、$ ではなく % でトリガーされます。

RewriteCond %{HTTP_HOST} ^([^\.]+)\.media\.xnet\.tk$
            ^

それはトリックを行う必要があります

于 2008-09-08T14:43:50.573 に答える