我试图用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