目前我正在处理将域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
我觉得我在重写规则中遗漏了一些东西。任何人都可以就此问题提出建议吗?在此先感谢您的帮助。
找出这个问题的答案。事实证明,现有的规则都是功能性的,并按预期工作;但是,服务器上的SSL证书导致不匹配错误。
SSL证书中的这种不匹配停止了重定向功能。上传必要的证书后,一切都按预期工作。希望这个答案可以帮助将来有需要的人。谢谢。