2011-10-13 157 views
1

我是使用.htaccess的新手,我在網上做了很多搜索,嘗試了無數「解決方案」來解決我的問題,但似乎沒有去做把戲。使用.htaccess從安全連接更改爲非安全連接

以下是我需要的: 我希望我的contact.html頁面使用安全連接進行下載(因此,表單提交將發送所有安全加密的憑證等)。我已經完成了這個使用的.htaccess使用如下代碼沒有問題:

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^contact\.html$ 
RewriteRule ^(.*)$ https://beta.runtimeriot.com/contact/$1 [R=301,L] 

因此,當用戶導航到contact.html頁面,安全的連接使用。這工作得很好。我想使用安全連接只下載該頁面,當然還要將用戶信息加密回服務器。但是,一旦建立安全連接以獲取contact.html文件,則從該點開始的所有其他文件都將通過安全連接下載。例如,我導航到聯繫頁面,然後從那裏跳轉(點擊一個鏈接)到about.html頁面,仍然使用安全連接。我嘗試了很多不同的提議來改變從https到http的協議,例如:

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^contact\.html$ 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

但是它們都不起作用。我不完全理解使用.htaccess的所有功能(和限制),所以有人可以告訴我,我的目標是使用.htaccess完成,還是需要尋求替代方法?

感謝您的幫助!

更新1

這裏是我的根.htaccess文件的全部代碼。注意:自我上一篇文章以來,我修改了代碼。

RewriteEngine On 
Options FollowSymLinks 

RewriteCond %{REQUEST_URI} !^/contact/contact\.html$ 
RewriteCond %{HTTPS} on 
RewriteRule ^(.*) http://beta.runtimeriot.com/$1 [R=301,L] 

RewriteCond %{HTTPS} off 
RewriteRule ^(/contact/contact\.html)$ https://beta.runtimeriot.com/$1 [R=301,L] 

回答

0

其實我很驚訝,你的第一個規則的作品,作爲REQUEST_URI變量通常包含領先/,所以你的規則應該是:

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^/contact\.html$ 
RewriteRule ^(.*)$ https://beta.runtimeriot.com/contact/$1 [R=301,L] 

雖然我猜你真正的意思是:

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^/contact/contact\.html$ 
RewriteRule ^(.*)$ https://beta.runtimeriot.com/contact/$1 [R=301,L] 

,或者爲簡單起見:

RewriteCond %{HTTPS} off 
RewriteRule ^/contact/contact\.html https://beta.runtimeriot.com/$1 [R=301,L] 

您的第二條規則看起來很實用,但它可能會創建一個無限循環,因爲它也與/contact/contact.html相匹配。應該是:

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^/contact/contact\.html$ 
RewriteRule (.*) http://%{HTTP_HOST}$1 [R=301,L] 

最後,我相信你的問題是,你困惑和第一規則不工作或者(我實際測試http://beta.runtimeriot.com/contact.html並沒有交換到HTTPS)。可能的原因:

+0

我在UPDATE 1中公佈了我的整個代碼。到目前爲止,它正確地將協議從http轉換爲https,當瀏覽到http:// beta時。runtimeriot.com/contact/contact.html。但是,從contact.html頁面導航時會發生同樣的問題。您檢查的地址不正確,您在URL中忽略了聯繫人目錄。很抱歉給您帶來不便,但是您將無法測試任何內容,因爲這是一個封閉的網站。 –

+0

對不起,我不能幫你進一步 - 你的更新代碼看起來對我來說是正確的。 – jsalvata