映射文件中特定域的 mod_rewrite

映射文件中特定域的 mod_rewrite

我有一堆域名,我想转到一个域名但该域名的各个部分。

# this is what I currently have
RewriteEngine On
RewriteCond %{HTTP_HOST} ^.*\.?foo\.com$ [NC]
RewriteRule ^.*$ ${domainmappings:www.foo.com} [L,R=301]

# rewrite map file
www.foo.com www.domain.com/domain/foo.com.php
www.bar.com www.domain.com/domain/bar.com.php
www.baz.com www.domain.com/other/baz.php.foo

问题是我不想让每个域都成为 RewriteCond 的一部分。我试过了

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

但这样对每个域都适用。我只希望重定向映射文件中的域,然后如果它与映射文件中的任何域都不匹配,则继续进行其他重写。

答案1

您可以在某种条件下取消引用地图并确保它非空,然后捕获它,这样您就不会两次返回地图:

RewriteCond ${domainmappings:%{HTTP_HOST}) (.+) RewriteRule .* %1 [L,R=301]

相关内容