使用RewriteCond将标志与通配符结合起来?

时间:2013-02-26 09:39:45

标签: apache .htaccess mod-rewrite

我尝试理解一些基本的重写内容,所以我的意思是:

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

RewriteCond %{HTTP_HOST} ^(www2.example.de|example.de)$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

但如果我把它结合起来就像

一样
RewriteCond %{HTTP_HOST} ^(www2.example|example).(.+)$ [NC]

由于重定向过多,我收到内部服务器错误。

那么我如何与www和不同的域名结尾相结合:

RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.name$ [NC,OR]
RewriteCond %{HTTP_HOST} ^example.name$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.de$ [NC,OR]
RewriteCond %{HTTP_HOST} ^example.de$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

我认为它应该很简单,但我只是不明白......

1 个答案:

答案 0 :(得分:1)

五个编纂可以合并为一个,如下:

RewriteCond %{HTTP_HOST} ^example\.com$               [NC,OR]
RewriteCond %{HTTP_HOST} (?:www\.)?example\.(name|de) [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]