我一直在寻找这个解决方案,但无法在任何地方找到它。
我有一个设置了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]]
但是没有成功
答案 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重定向?否则,您需要在此重定向中包含一个异常,以避免重定向循环。