将以https://开头的所有网址重定向到以http://

时间:2017-06-16 21:03:28

标签: .htaccess url redirect mod-rewrite

我一直在寻找这个解决方案,但无法在任何地方找到它。

我有一个设置了SSL的网站(商店),工作正常,但客户只能获得他们刚购买的文件的URL。

因此,我对下载文件的工作URL应如下所示:

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

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

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

所以我需要的是从以下开头的这些网址中删除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]]

但是没有成功

1 个答案:

答案 0 :(得分:2)

正如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路径。查询字符串会自动传递到 substitution ,前提是您不提供查询字符串。

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