2016-11-17 16 views
-1

私はApacheにvHostを持っていて、すべてのサブドメインをサブドメインwww.domain.tldに書き換えたいと思っています。ここでは、tld-partがユーザである必要があります。Apache vHost mod_rewrite

私はすでにmod_rewriteのドキュメントを見ましたが、少なくとも私は理解できませんでした。誰かが私にそれをexlainすることを願っています。

私のvhost-Configで実際の部分は、以下のことをイスト...しかし、唯一のサブドメインの問題を一致しますが、ないTLDの問題:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^([a-z.]+)?domain\.de$ [NC] 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule .? http://www.%1domain.de%{REQUEST_URI} [R=301,L] 

しかし、私は私の前に%1を理解していませんドメインは...サブドメインは、WWWないすべての要求をリダイレクト

+0

*すべてのドキュメントを読んだことがありますか? – Walf

+0

は、はい、私は実際には、今1 が書き換え%understandig 'するRewriteCond%{HTTP_HOST}!^ www.domain.de $ [NC] のRewriteRuleでなければなりませんでしたか。?私は4つのドメインのために別のエンディングを書き直したいと思っています。 私はこれをすべてのドメインに対して書いてもらえませんか、それとも1つのルールでこれを取ることができますか?何も見つかりませんでした:/ – valsel

+0

このタグを使用している人の90%以上が正規表現に問題があります。私は多くの人が正確な問題を見つけることはないと確信していますが、類似点はどこにでもあります。問題を小さなものに分解してください。 '%'の後方参照を使ってtldを取得することができます。 'domain'はいつも全く同じですか?キャプチャも。サブドメインも処理しないでください。 (恐らく。)2行で可能です。もう一度行ってください。また、コードの大きなブロックはあなたの質問を編集する必要があります。 – Walf

答えて

0
RewriteCond %{HTTP_HOST} ^(?!www\.)(?:[^.]+\.)?(domain\.[^.]+)$ [NC] 
RewriteRule .* http://www.%1/$0 [R=301,L] 

は、0又は1 sudomainレベルを有し、ドメインはdomainとのTLDの1つのレベルを有しています。 .co.ukとする必要がある場合は、変更が必要です。

+0

ありがとうございました!!! :) – valsel

+0

だから、それは動作していますか? – Walf

関連する問題