【问题标题】:Redirect all URLs starting with https:// to same URLs starting with http://将所有以 https:// 开头的 URL 重定向到以 http:// 开头的相同 URL
【发布时间】:2017-11-19 17:53:54
【问题描述】:

我一直在寻找这个解决方案,但在任何地方都找不到。

我有一个设置了 SSL 的网站(商店),除了在客户可以获得他们刚购买的文件的 URL 的区域外,它工作正常。

所以,我下载文件的工作 url 应该是这样的:

https://www.mywebsite.com/index.php?eddfile=123456etc

但只有在没有 HTTPS 前缀的情况下浏览文件时,这些文件才有效:

http://www.mywebsite.com/index.php?eddfile=123456etc

所以我需要的只是从这些以以下开头的 URL 中删除 https:

https://www.mywebsite.com/index.php?eddfile

并将它们重定向到相同的 URL,但没有 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]]

但没有成功

【问题讨论】:

  • @Marcin 这不是那个问答的副本
  • (在 Apache 上)没有干净的系统级方法可以 from HTTPS to HTTP。如果您需要这样做,几乎可以肯定您是在尝试解决症状,而不是实际解决手头的问题。研究为什么您的网站的某些部分无法在 HTTPS 上运行并解决该问题。回到石器时代而不使用 HTTPS 是 NOT 的答案。
  • @Martin 感谢您的回复。是的,你是对的,这是解决问题的一种绝望之举。除了这些文件之外,网站的所有其余部分都在 HTTPS 上运行良好 - 如果您有任何想法,我可以如何强制这些 URL 文件在 HTTPS 上运行,那将是很棒的。我在 WordPress 上使用 Eeasy Digital Downloads 插件。谢谢
  • "文件仅在以下情况下有效" - 当您尝试通过 HTTPS 访问这些 URL 时实际发生了什么? (顺便说一句,除了重定向,你能不能简单地直接链接到 HTTP URL?大概如果 HTTP URL 有效,那么你在任何地方都没有 HTTP 到 HTTPS 的重定向?)

标签: .htaccess url redirect mod-rewrite


【解决方案1】:

正如 Martin 在 cmets 中建议的那样,真正的解决方案是解决您的 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 路径。查询字符串会自动传递给 substitution,前提是您不提供查询字符串。

既然您说 HTTP URL“有效”,那么我假设您没有 HTTP 到 HTTPS 重定向?否则,您需要在此重定向中包含异常以避免重定向循环。

【讨论】:

  • 我正在使用一个生成这些 URL 的插件,因此它不是单个链接,而是很多链接 - 这些是为文件下载生成的唯一链接。我已经为我的网站设置了 SSL,除了这些文件之外它工作得很好——不知何故,它们没有重定向到 HTTPS(而是加载了文件未找到错误)——一旦我手动删除了 https 前缀中的“s”,我获取文件。如果有一种方法可以专门强制这些带有 eddfile 查询字符串的文件正确重定向到 HTTPS,那将是很棒的。试了上面的代码,没有得到任何结果
  • “不知何故他们没有被重定向到HTTPS(文件未找到错误被加载)” - “文件未找到”?!但是当您请求此链接的 HTTP 版本时,您大概不会收到“找不到文件”错误吗? “如果有一种方法可以专门强制这些带有 eddfile 查询字符串的文件正确重定向到 HTTPS,那将是非常棒的。” - 但你试图在你的问题中重定向到 HTTP?上面的代码什么也没做?你把它放在你的.htaccess 文件的顶部附近吗?顺序很重要。
  • 啊刚刚将它添加到 .htaccess 文件的顶部,它工作得很好。你救了我的一天!非常感谢
猜你喜欢
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多