2008-09-08 19 views
27

ワイルドカードドメインの要求をサブディレクトリにリダイレクトしようとしています。
ie。 something.blah.domain.com - >blah.domain.com/somethingサブドメインに基づくApacheリライト

書き換えルールで使用するサブドメイン名の取得方法はわかりません。

最終解決:

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

か、ApacheのドキュメントからURL Rewriting Guideを見ている必要がありpilif

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

答えて

31

で指摘したように。

次はテストされていないが、それはトリックにする必要がありますサブドメインは何のドットが含まれていない場合

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

これはのみ動作します。それ以外の場合は、RewriteCondのRegexpを変更して、アンカーによってまだ動作するはずの文字に一致させる必要がありますが、これは確かに安全です。

+1

感謝を行う必要があります

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

。魅力のように動作します。 – goo

+0

注記「リライトを使用しないとき」:http://httpd.apache.org/docs/2.2/rewrite/avoid.html#redirect – marcovtwout

3

これを試してみてください:

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

@pilifを(コメントを参照してください):さて、それは本当です。私は自分のプロジェクトの1つに使用している.htaccessをコピーしました。それがわずかに異なるアプローチを持っている:)

+0

ソリューションはblah.domain.comにリダイレクトされず、something.blahにリライトされます。 .domain.com /何か、これは私が元の質問をどのように読むのかではありません。 – pilif

+0

もし両方が同じVirtualHostによって提供されていればOKです。特に、このようにすると、クライアントはリダイレクトを認識しません。つまり、まだsomething.blah.example.comが表示されます。 –

1

@Sam

あなたのRewriteCondラインが間違っていると思います。変数の展開は、$ではなく%でトリガされます。トリックに

+0

HA! 1文字のタイプミスが再び襲う:( – Sam

関連する問題