2017-06-16 182 views
2

開頭的相同網址我一直在尋找此解決方案,但無法在任何地方找到它。將以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]] 

但與

沒有成功
+0

可能重複的[Htaccess - HTTP to HTTPS&.HTML to /](https://stackoverflow.com/questions/34114290/htaccess-http-to-https-html-to) – Marcin

+0

@Marcin這不是一個該問答的副本 – Martin

+0

(在Apache上)從* HTTPS *到* HTTP都沒有乾淨的系統級別的方法。如果您需要這樣做,幾乎可以確定您正在嘗試解決症狀,而不是實際解決問題。研究爲什麼您的網站的某些部分無法在HTTPS上工作並解決該問題。保持在石器時代,不使用HTTPS是***不是答案。 – Martin

回答

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路徑。查詢字符串會自動傳遞給替代,前提是您不提供查詢字符串。

既然你說HTTP URL「有效」,那麼我假設你沒有HTTP到HTTPS重定向?否則,您需要在此重定向中包含一個異常,以避免重定向循環。

+0

我正在使用一個插件這些網址不是單一鏈接,而是大量的鏈接 - 這些鏈接是爲文件下載生成的獨特鏈接。 我已經爲我的網站設置了SSL,除了這些文件外它工作的很好 - 不知何故它們沒有被重定向到HTTPS(而是找不到文件錯誤),而且一旦我手動從https中刪除「s」前綴我得到的文件。 如果有一種方法我可以專門強制這些文件與eddfile查詢字符串被正確地重定向到HTTPS將是非常棒的。 試過上面的代碼,沒有得到任何結果 – gt1987

+1

「不知何故,他們沒有重定向到HTTPS(文件未找到錯誤獲取加載,而不是)」 - 「找不到文件」?但是當你請求這個鏈接的HTTP版本時,你大概不會得到「文件未找到」錯誤? 「如果有一種方法可以特別強制這些文件與eddfile查詢字符串被正確地重定向到HTTPS,那將是非常棒的。」 - 但你試圖在你的問題重定向到HTTP?上面的代碼什麼都沒做?你把它放在'.htaccess'文件的頂部嗎?順序很重要。 – MrWhite

+1

啊只是將它添加到.htaccess文件的頂部,它完美地工作。 你救了我的一天! 非常感謝 – gt1987

相關問題