Mod rewrite Apache vHost mod_重写

Mod rewrite Apache vHost mod_重写,mod-rewrite,apache2,Mod Rewrite,Apache2,我在Apache中有一个vHost,我想将所有子域重写为子域www.domain.tld,其中tld部分应该是用户输入的部分 我已经看过mod_rewrite的文档,但至少我不明白:)我希望有人能解释给我听 我的vHost配置中的实际部分如下所示,。。。但仅匹配子域问题,而不匹配tld问题: RewriteEngine on RewriteCond %{HTTP_HOST} ^([a-z.]+)?domain\.de$ [NC] RewriteCond %{HTTP_HOST} !^www\.

我在Apache中有一个vHost,我想将所有子域重写为子域www.domain.tld,其中tld部分应该是用户输入的部分

我已经看过mod_rewrite的文档,但至少我不明白:)我希望有人能解释给我听

我的vHost配置中的实际部分如下所示,。。。但仅匹配子域问题,而不匹配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

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

重定向所有请求,其中子域不是www,具有0或1个sudomain级别,域是
domain
,并且具有一个tld级别。如果你也需要,比如说
.co.uk
,它需要修改。

你读过任何文档吗?是的,我确实读过,现在明白了%1重写应该是
RewriteCond%{HTTP\u HOST}^www.domain.de$[NC]重写规则。?www.domain.de%{REQUEST_URI}[R=301,L]
但这根本解决不了我的问题…-我想重写它的4个领域,有另一个结局。我必须为每个域写这个,或者我可以在一个规则中使用这个,。。。怎么做?找不到任何东西:/n您遇到了与使用此标记的90%以上的人相同的问题,正则表达式有困难。我相信很多人从未发现他们的问题,但相似之处无处不在。把你的问题分解成更小的部分。您可以使用
%
反向引用捕获tld。
domain
是否总是完全相同?也要抓住这一点。您是否也需要不处理子域?(可能)可能有两行;再来一次。此外,大代码块应该是对您的问题的编辑。