我試圖用http auth basic保護~/public_html/dev
目錄,但爲了確保安全,我想通過ssl來運行它。通過HTTPS進行通過URL重寫進行HTTP身份驗證
如果請求URI以/dev
開始並且正常工作,則以下.htaccess
文件的中間部分切換到https。
該文件的最後一部分工作正常,但無法正確使用https重定向。
我基本上想要能夠輸入http://www.example.com/dev/some_sub_dir/
並被重定向到https://www.example.com/dev/some_sub_dir/
並提示輸入http認證用戶名和密碼。
當前發生的事情是,如果我去http://www.example.com/dev/some_sub_dir/
我得到一個用戶名和密碼通過端口80,然後立即再次通過端口443得到提示。所以我的憑據被髮送兩次,一次在明確,一次加密。使整個https url重寫變得毫無意義。
這樣做的原因是,我不會無意中通過http提交我的用戶/密碼; https將永遠用於訪問/dev
目錄。
.htaccess
位於~/public_html/dev
目錄中。
# Rewrite Rules for example.com RewriteEngine On RewriteBase/ # force /dev over https RewriteCond %{HTTPS} !on RewriteCond %{REQUEST_URI} ^/dev RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} # do auth AuthType Basic AuthName "dev" AuthUserFile /home/matt/public_html/dev/.htpasswd Require valid-user
,這很漂亮 – Matthew 2012-12-05 09:41:28
是的,可能不是最佳解決方案,但經過四個小時發現自己處於和你一樣的困境中,它是最好的解決方案我可以找到:) – siliconrockstar 2012-12-06 22:20:33
我試了一下,然後一些;這個解決方案對我來說最合適。我刪除了FilesMatch指令,然後驗證了所有內容 - 如果訪問者未定義文件(例如, index.php文件。 http://www.askapache.com/htaccess/apache-ssl-in-htaccess-examples.html也會給你很多好的信息;基於此,我還包含SSLOptions + StrictRequire – Praesagus 2013-03-18 23:43:57