使用SSL和站点名称更改的URL重定向

时间:2015-05-08 00:53:26

标签: php apache .htaccess redirect ssl

我的网址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。有人可以帮助我在没有安全消息的情况下重定向网站吗?我不明白为什么旧网址会使用https协议解析。

更新: 根据要求,我得到的安全警告是&#34;您的连接不是私密的&#34;。相关的错误代码是NET :: ERR_CERT_COMMON_NAME_INVALID

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

2 个答案:

答案 0 :(得分:0)

看起来您需要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]

答案 1 :(得分:0)

尝试将重定向块更改为:

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(反之亦然),则需要为两者提供有效的证书。

修改

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