【发布时间】:2017-04-01 02:47:33
【问题描述】:
我在 Apache 中有一个 vHost,我想将所有子域重写为子域 www.domain.tld,其中 tld 部分应该是用户输入的那个。
我已经看过mod_rewrite的文档,但至少我不明白:)我希望有人能解释给我。
我的 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...
【问题讨论】:
-
您阅读过任何个文档吗?
-
是的,我确实做到了,现在理解 %1 重写应该是
RewriteCond %{HTTP_HOST} !^www.domain.de$ [NC] RewriteRule .? www.domain.de%{REQUEST_URI} [R=301, L]但这根本不能解决我的问题... - 我想为 4 个域重写它,有另一个结尾.我是否应该为每个域都写这个,或者我可以在一个规则中接受这个,......以及如何?没有找到任何东西:/ -
你有同样的问题,超过 90% 的人使用这个标签,正则表达式有困难。我敢肯定,很多人从来没有找到他们确切的问题,但相似之处无处不在。把你的问题分解成更小的部分。您可以使用
%反向引用捕获 tld。domain总是完全相同吗?捕捉它,也是。您还需要处理没有子域吗? (可能。)可能有两行;再来一次。此外,大块代码应该是对您的问题的编辑。
标签: mod-rewrite apache2