我有一堆域名,我想转到一个域名但该域名的各个部分。
# 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]