0

如何缩短这个表达式?我不想使用 2 行,而是检查与 mysite.com 不同的任何域,例如带有或不带有 www 和重定向的 mysite.org 或 www.mysite.org。

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^mysite\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.mysite\.org$ [OR]
RewriteCond %{HTTP_HOST} ^mysite\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.mysite\.net$

RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]

使用 [OR] 或这样做是否更快

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

PS为什么即使我不使用[NC],这也是不区分大小写的?

4

1 回答 1

0

您可能想查看有关规范主机名的 Apache 文档,您的规则可以表示为否定

RewriteEngine On
RewriteCond %{HTTP_HOST}    !^mysite\.com$ [NC]
RewriteCond %{HTTP_HOST}    !^$
RewriteRule ^(.*)$  http://mysite.com/$1 [L,R=301]

而对于没有 [NC] 的规则匹配,它可能取决于浏览器发送给服务器的内容。

于 2012-04-28T08:25:15.837 回答