301 不带 www 的重定向域有效,但带 www 无效
Posted
技术标签:
【中文标题】301 不带 www 的重定向域有效,但带 www 无效【英文标题】:301 Redirect domain without www works, but with www does not 【发布时间】:2019-08-26 14:35:42 【问题描述】:目前我正在处理将域 A 重定向到域 B 并将域 A 中的特定页面重定向到域 B 的请求。这是伪代码中的期望:
foo.com =====> https://www.bar.com
foo.com/foo =====> https://www.bar.com/bar
和:
www.foo.com =====> https://www.bar.com
www.foo.com/foo =====> https://www.bar.com/bar
但是,只有非 www 重定向按预期工作,而 www 重定向根本不起作用。本质上,上面的第一组重定向有效,而第二组无效。
这是我的 Vhost 文件:
<VirtualHost *:80>
ServerName foo.com
ServerAlias www.foo.com
ErrorLog /etc/httpd/logs/foo.com-error.log
Include /etc/httpd/conf.d/rewrite_rules/foo.com.rewrite
</VirtualHost>
我的重写规则:
RewriteEngine On
RewriteRule ^/foo$ https://www.bar.com/bar [R=301,L,NC]
RewriteRule (.*) https://www.bar.com [R=301,L,NC]
奇怪的是,当我在测试服务器上使用 curl 进行测试时,似乎 URL 正在被重定向:
301 http://www.foo.com/ https://www.bar.com
我觉得我在重写规则中遗漏了一些东西。任何人都可以就这个问题提出建议吗?提前感谢您的帮助。
【问题讨论】:
【参考方案1】:想出了这个问题的答案。事实证明,现有的规则都是有效的并且按预期工作。但是,服务器上的 SSL 证书导致不匹配错误。
SSL 证书中的这种不匹配停止了重定向功能。上传必要的证书后,一切都按预期工作。希望这个答案对将来有需要的人有所帮助。谢谢。
【讨论】:
以上是关于301 不带 www 的重定向域有效,但带 www 无效的主要内容,如果未能解决你的问题,请参考以下文章