mod_rewrite 捕获域名和 tld

mod_rewrite 捕获域名和 tld

我正在使用 mod_write 来重写这个

www.variabledomain.variableext

http://my.com/variabledomain.variableext 

请注意variabledomainvariableext确实是可变的,所以我无法对它们进行硬编码。

我不是 mod_rewrite 方面的专家,但我认为类似的东西会起作用,但事实并非如此。有什么想法我应该做什么吗?

RewriteRule ^(.*)\.(.*)\.(.*)$ http://my.com/$2\.$3 [R=301,L]

答案1

重写规则仅匹配 URL 路径,不匹配主机名。您需要使用重写条件例如

RewriteCond HTTP_HOST ([^.]+)\.([^.]+)\.([^.]+)$
RewriteRule ^/(.*) http://example.com/%2.%3/$1 [R=301,L]

Apache 文档中有更多关于如何做类似事情的优秀示例”使用 mod_rewrite 实现动态海量虚拟主机“。请特别注意右侧的“另请参阅”部分,其中有很好的例子。

相关内容