2016-11-17 71 views
-1

我在Apache中有一個vHost,我想將所有子域重寫到子域www.domain.tld,其中tld-part應該是用戶輸入的子域。Apache vHost mod_rewrite

我已經看過mod_rewrite的文檔,但至少我不明白:)我希望有人能把它交給我。

在我的實際部分虛擬主機,配置IST以下,......但僅匹配子域的問題,但不是頂級域名問題:

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我域...

+0

您是否閱讀過*任何*文檔? – Walf

+0

是的,我確實做了,現在明白%1 重寫應該是 'RewriteCond%{HTTP_HOST}!^ www.domain.de $ [NC] RewriteRule。? www.domain.de%{REQUEST_URI} [R = 301,L]' 但這並不能解決我的問題 - 我想重寫它的4個域,有另一個結局。 我是否可以爲每個域編寫此代碼,或者我可以將它用於一個規則中......以及如何實現?沒有找到任何內容:/ – valsel

+0

您有同樣的問題,使用此標籤的人中有超過90%的人在正則表​​達式中遇到困難。我相信很多人從未發現他們確切的問題,但相似之處無處不在。把你的問題分解成更小的部分。您可以使用'%'反向引用捕獲tld。 '域'總是完全一樣嗎?捕捉這一點。你還需要處理沒有子域? (可能。)這是可能的兩行;再去一次。此外,大塊代碼應該被編輯爲您的問題。 – Walf

回答

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

重定向所有請求,其中子域不是WWW,具有0或1 sudomain水平,域名domain並具有頂級域名的一個級別。如果您還需要,說.co.uk,它將需要修改。

+0

非常感謝! :) – valsel

+0

那麼,它工作? – Walf