将以https://开头的所有网址重定向到以http://
开头的相同网址我一直在寻找此解决方案,但无法在任何地方找到它。将以https://开头的所有网址重定向到以http://
我有一个设置了SSL的网站(商店),除了在客户将获得他们刚刚购买的文件的URL的区域中工作正常。
所以,我的工作链接直接下载文件应该是这个样子:
https://www.mywebsite.com/index.php?eddfile=123456etc
但这些文件只有当你浏览他们没有HTTPS前缀的工作:
http://www.mywebsite.com/index.php?eddfile=123456etc
所以我需要什么只是从这些以下列URL开头的https删除https:
https://www.mywebsite.com/index.php?eddfile
并将它们重定向到t Ø使用相同的网址,但没有HTTPS前缀,而与普通的前缀:
http://www.mywebsite.com/index.php?eddfile
注:这不是一个普通的HTTPS为我找到答案,在这里HTTP(反之亦然)重定向 - 虽然这应该是一个简单的。 htaccess的重定向,我要确保这只是发生于上面
开始时是作为描述的网址,我试图做这样的事情:
RewriteEngine On
RewriteCond %{REQUEST_URI} eddfile
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]]
但与
没有成功
正如Martin在评论中所建议的,真正的解决方案是解决为什么你的HTTPS URL“不起作用”。 (?而且,为什么不直接如果“作品”链接到HTTP URL)
无论如何,回答您的具体问题...尝试靠近你.htaccess
文件的顶部,而不是执行以下操作:
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{QUERY_STRING} ^eddfile=.
RewriteRule ^index\.php$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
这只是一个“临时”(302)重定向,因为这只是一个“临时”修复。
eddfile
是查询字符串的一部分,而不是URL路径。查询字符串会自动传递给替代,前提是您不提供查询字符串。
既然你说HTTP URL“有效”,那么我假设你没有HTTP到HTTPS重定向?否则,您需要在此重定向中包含一个异常,以避免重定向循环。
我正在使用一个插件这些网址不是单一链接,而是大量的链接 - 这些链接是为文件下载生成的独特链接。 我已经为我的网站设置了SSL,除了这些文件外它工作的很好 - 不知何故它们没有被重定向到HTTPS(而是找不到文件错误),而且一旦我手动从https中删除“s”前缀我得到的文件。 如果有一种方法我可以专门强制这些文件与eddfile查询字符串被正确地重定向到HTTPS将是非常棒的。 试过上面的代码,没有得到任何结果 – gt1987
“不知何故,他们没有重定向到HTTPS(文件未找到错误获取加载,而不是)” - “找不到文件”?但是当你请求这个链接的HTTP版本时,你大概不会得到“文件未找到”错误? “如果有一种方法可以特别强制这些文件与eddfile查询字符串被正确地重定向到HTTPS,那将是非常棒的。” - 但你试图在你的问题重定向到HTTP?上面的代码什么都没做?你把它放在'.htaccess'文件的顶部吗?顺序很重要。 – MrWhite
啊只是将它添加到.htaccess文件的顶部,它完美地工作。 你救了我的一天! 非常感谢 – gt1987
可能重复的[Htaccess - HTTP to HTTPS&.HTML to /](https://stackoverflow.com/questions/34114290/htaccess-http-to-https-html-to) – Marcin
@Marcin这不是一个该问答的副本 – Martin
(在Apache上)从* HTTPS *到* HTTP都没有干净的系统级别的方法。如果您需要这样做,几乎可以确定您正在尝试解决症状,而不是实际解决问题。研究为什么您的网站的某些部分无法在HTTPS上工作并解决该问题。保持在石器时代,不使用HTTPS是***不是答案。 – Martin