将所有非 www 访问者重定向至 www

将所有非 www 访问者重定向至 www

我不断收到以下答案的变体,但它不起作用

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

这个解决方案不好的原因是,如果我去

alwaysromaing.com/site

我永远不会被重定向到 WWW.alwaysroaming.com/site

有人可以提供这里所需的正确重写吗?

答案1

我建议这样做:

RewriteCond %{HTTP_HOST} !^www.alwaysroaming.com$ [NC]
重写规则 ^/(.*)$ http://www.alwaysroaming.com/$1 [R=301,L]

关键部分是第二行中“^”后面的“/”。NC 表示如果有人输入混合/大写字母,它就会起作用。

答案2

这是一个很常见的问题,它属于mod_rewrite 的文档- 您确实读过,对吧?

假设您在端口 80 上运行:

RewriteCond %{HTTP_HOST}   !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://fully.qualified.domain.name/$1 [L,R]

如果您没有使用 80 端口,文档中还有另一个示例,并涵盖了其他常见场景

相关内容