我有一堆域名,我想去一个域名,但该域的不同部分。
# 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]但这将为每个域做这件事。我只希望映射文件中的域重定向,如果它与映射文件中的任何域都不匹配,则继续进行其他重写。
发布于 2010-12-30 14:11:32
你在正确的轨道上。你需要做的是使用地图上的管道操作符,这样你就有了一个通用的。
RewriteCond ${domainmappings:%{HTTP_HOST}|NOTFOUND} ^(.+)$
RewriteCond %1 !^NOTFOUND$
RewriteRule ^.*$ ${domainmappings:%1} [L,R=301]如果主机不在列表中,则第二个条件将不匹配。您仍然需要处理www前缀和大小写匹配,但您已经明白了这一点。
发布于 2010-12-31 01:40:33
当我找出大小写匹配时,我已经很接近了,但是我找不到www前缀。如果我使用下面的第一个,它可以在没有www的情况下工作。如果我使用第二个,它可以与www一起工作。如果我两者都用--两者都不起作用。
RewriteCond %{HTTP_HOST} (.*)$ [NC] # works for without www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] # works with www
RewriteCond ${domainmappings:%1|NOTFOUND} ^(.+)$ [NC]
RewriteCond %1 !^NOTFOUND$
RewriteRule ^.*$ ${domainmappings:%1} [L,R=301]有什么想法吗?
https://stackoverflow.com/questions/4560370
复制相似问题