【问题标题】:301 Redirect domain without www works, but with www does not301 不带 www 的重定向域有效,但带 www 无效
【发布时间】: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

我觉得我在重写规则中遗漏了一些东西。任何人都可以就这个问题提出建议吗?提前感谢您的帮助。

【问题讨论】:

    标签: regex apache redirect mod-rewrite http-status-code-301


    【解决方案1】:

    想出了这个问题的答案。事实证明,现有的规则都是有效的并且按预期工作。但是,服务器上的 SSL 证书导致不匹配错误。

    SSL 证书中的这种不匹配停止了重定向功能。上传必要的证书后,一切都按预期工作。希望这个答案对将来有需要的人有所帮助。谢谢。

    【讨论】:

      猜你喜欢
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2013-12-16
      • 1970-01-01
      • 2011-04-01
      • 2018-06-02
      相关资源
      最近更新 更多