Apache 旧https导致htaccess重定向中出现问题

Apache 旧https导致htaccess重定向中出现问题,apache,.htaccess,Apache,.htaccess,我正在将旧站点URL重定向到新站点 我创建了一个htaccess,它通过添加/shop/directory将所有旧链接(root除外)重定向到新路径。这一切都很好,但所有流量都将使用旧的https,它会抛出一个证书错误,因为新服务器帐户上没有SSL 这是当前的htaccess RewriteEngine on RewriteCond %{HTTP_HOST} ^oldsite.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.oldsite.com [NC]

我正在将旧站点URL重定向到新站点

我创建了一个htaccess,它通过添加/shop/directory将所有旧链接(root除外)重定向到新路径。这一切都很好,但所有流量都将使用旧的https,它会抛出一个证书错误,因为新服务器帐户上没有SSL

这是当前的htaccess

RewriteEngine on

RewriteCond %{HTTP_HOST} ^oldsite.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteRule (.*)$ https://www.newsite.com/ [R=301,NC]

RewriteCond %{HTTP_HOST} ^oldsite.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com [NC]
RewriteRule ^(.*).(php|html)$ https://www.newsite.com/shop/$1.$2 [L,R=301,NC]
如果您有任何建议,我们将不胜感激,提前谢谢您


~M

使用.htaccess无法解决您的问题。如果您没有工作的HTTPS站点,则不能使用HTTP重写将HTTPS重定向到任何位置,因为客户端和服务器甚至需要SSL证书才能开始使用HTTPS相互通信。 您应该为oldsite.com创建另一个虚拟主机来执行重定向(现在您应该能够获得非常便宜甚至免费的SSL证书)

其他类似答案:


使用.htaccess无法解决您的问题。如果您没有工作的HTTPS站点,则不能使用HTTP重写将HTTPS重定向到任何位置,因为客户端和服务器甚至需要SSL证书才能开始使用HTTPS相互通信。 您应该为oldsite.com创建另一个虚拟主机来执行重定向(现在您应该能够获得非常便宜甚至免费的SSL证书)

其他类似答案:



您的问题有点不清楚,但如果您希望将流量重定向到非ssl的新站点,只需在重写规则中将
https
替换为
http
。旧站点使用的是https,因此所有当前流量都来自google,反向链接等。上面的htaccess对于http很好,但是如果我使用https跟踪旧链接,它会抛出no-SSL错误。我需要向htaccess添加代码,将旧站点的https版本重定向到新站点,这样就不会出现错误,也不会丢失任何通信量。因此,您在同一apache上运行oldsite.com和newsite.com,但仅为newsite.com提供SSL证书?是,因为旧的流量是https,所以会出现SSL证书问题。你的问题有点不清楚,但是如果你想将流量重定向到非SSL的新站点,只需在RewriteRules中将
https
替换为
http
。旧站点是在https上的,所以所有当前的流量都来自google,反向链接等。上面的htaccess对于http很好,但是如果我使用https跟踪旧链接,它会抛出no-SSL错误。我需要向htaccess添加代码,将旧站点的https版本重定向到新站点,这样就不会出现错误,也不会丢失任何通信量。因此,您在同一apache上运行oldsite.com和newsite.com,但仅为newsite.com提供SSL证书?是,而且,因为旧的通信是https,所以会出现SSL证书问题。在其他规则和条件出现之前,是否没有办法关闭https?我在另一个线程中看到了这一点,但在我的例子中,这段特定的代码不起作用。重写引擎在重写状态!{HTTPS}off RewriteRule^(.*)${HTTP_HOST}%{REQUEST_URI}[L,R=301]RewriteCond%{HTTP_HOST}^www\。重写规则^(.*)${HTTP_HOST}%{REQUEST_URI}[L,R=301]否,这是SSL的主要用途。除非站点配置了有效的证书,否则非ssl请求将永远不会到达.htaccess(或站点)。我明白了。谢谢你的帮助,不客气。我在上一篇评论中输入了一个错误,应该是:ssl请求永远不会到达.htaccess(或站点),除非站点配置了有效的certificategotcha。我修好了。只需将旧的SSL重新设置为重定向所在的新服务器的密钥,即可正常工作。:)没有办法在其他规则和条件之前关闭https吗?我在另一个线程中看到了这一点,但在我的例子中,这段特定的代码不起作用。重写引擎在重写状态!{HTTPS}off RewriteRule^(.*)${HTTP_HOST}%{REQUEST_URI}[L,R=301]RewriteCond%{HTTP_HOST}^www\。重写规则^(.*)${HTTP_HOST}%{REQUEST_URI}[L,R=301]否,这是SSL的主要用途。除非站点配置了有效的证书,否则非ssl请求将永远不会到达.htaccess(或站点)。我明白了。谢谢你的帮助,不客气。我在上一篇评论中输入了一个错误,应该是:ssl请求永远不会到达.htaccess(或站点),除非站点配置了有效的certificategotcha。我修好了。只需将旧的SSL重新设置为重定向所在的新服务器的密钥,即可正常工作。:)