【问题标题】:URL redirect with SSL and site name change使用 SSL 和站点名称更改的 URL 重定向
【发布时间】:2015-07-18 19:02:09
【问题描述】:

我有一个 URL www.site-name.com 已移至 www.sitename.com,然后在新站点 (sitename.com) 上安装了 SSL 证书。我对这两个站点都有一个 .htaccess 文件。

对于旧网站,我将 site-name.com 重定向到 sitename.com,如下所示:

<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks

RewriteCond %{HTTP_HOST} ^site-name.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.site-name.com$
RewriteRule (.*)$ http://www.sitename.com/$1 [R=301,L]

</IfModule>

这有效,但如果您输入 https://www.site-name.com 您会收到一条安全消息并且没有重定向。大多数 .htaccess 知识库告诉您如何从 http 重定向到 https 或从 site-name.com 重定向到 sitename.com,但我需要知道如何同时重定向这两者。我需要 http://www.site-name.com 完全重定向到 https://wwwsitename.com。有人可以帮我在没有安全消息的情况下重定向网站吗?我不明白为什么旧的 url 用 https 协议解析。

更新: 根据要求,我收到的安全警告是“您的连接不是私密的”。相关的错误代码是 NET::ERR_CERT_COMMON_NAME_INVALID

以下是一些可能对解决问题很重要的附加信息: 在 Google 中搜索站点时,sitename.com 和 site-name.com 都会出现在搜索中。当您单击 site-name.com 时,它会尝试转到 https://site-name.com 而不是重定向到正确的站点:https://sitename.com

【问题讨论】:

  • 如果您没有 www.site-name.com 的 SSL 证书,那么您为什么认为它甚至会是一个相关的域地址来合并您的重定向。如果您尝试将两个站点都重定向到 https,那么只需使用您在第一个站点上的 htaccess 代码和新站点的 htaccess 文件中的此代码。RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https:// %{HTTP_HOST}%{REQUEST_URI} [R,L]
  • 我不确定我是否遵循。 www.site-name.com 是原始域,我希望它重定向到新域 www.sitename.com。原始域没有 SSL,但当您在 ​​URL 中使用 https 时,它仍然可以解析。这不是想要的效果。我不希望它解决 - 我只是希望它重定向。这是一个问题,因为当您在 Google 中搜索该网站时,它会尝试(出于某种原因)将您带到 site-name.com。因此,它不会进入新站点,而是发出安全警告。

标签: php apache .htaccess redirect ssl


【解决方案1】:

看来你需要RewriteCond %{HTTPS} on:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^sitename.com[nc]
RewriteRule ^(.*)$ http://www.sitename.com/$1 [r=301,nc]

【讨论】:

  • 这个对我不起作用。它只是向我展示了 www.site-name.com 的目录内容
  • 看起来是其他人建议的 https: //www.site-name.com 的 SSL 证书问题。
【解决方案2】:

尝试将您的重定向块更改为:

RewriteBase /
RewriteCond %{HTTP_HOST} ^site-name\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.site-name\.com$ [NC]
RewriteRule ^(.*)$ https://www.sitename.com/$1 [R=301,L]

如果这不起作用,您的 SSL 证书可能对 sitename.comwww.sitename.com 都无效。如果是这种情况,只需从重定向中删除 www. 即可防止出现警告。但是,如果您希望对 sitename.com 的请求也重定向到 www.sitename.com(反之亦然),则您需要同时拥有两者的有效证书。

编辑:

根据以下 cmets 中的说明,如果您希望通过 HTTPS 访问并重定向 site-name.comwww.site-name.com,还需要有效证书。

【讨论】:

  • 这些重写的工作方式与我原来的类似。除非将 https 添加到原始 url,否则一切都会解决。因此,如果我输入 www.site-name.com,它会重定向到 www.sitename.com。但如果我输入site-name.com,它会发出安全警告。如何让该部分重定向到正确的 URL?
  • 您收到的警告是什么?请将其添加到您的原始问题中。
  • 那应该是“但是如果我输入 https://site-name.com 它会给出一个安全警告。”
  • 这可能意味着您没有site-name.com 的有效证书。
  • 如果我只想将互联网流量重定向到新站点,是否需要一个?我有一个用于 sitename.com 的
猜你喜欢
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多