我经营的网站同时在VestaCP和cPanel下运行。在开发网站时,我设置了htpassword保护,密码语法如下:
AuthType Basic
AuthUserFile /home/the-account/htpasswd
AuthName "Restricted"
Require valid-user
用于重定向以获取要重定向到的所有内容https://www.the-website...我使用:
RewriteEngine on
RewriteBase /
Options +FollowSymlinks
# Redirect http to https
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.website.ext$1 [R,L]
如果未启用密码保护,重定向行可以正常工作。全部:
website.ext
www.website.ext
http://website.ext
重定向到:
https://www.website.ext (the goal)
然而,VestaCP与cPanel的行为不同,并且在cPanel中严重断裂。在vesta中,当您访问类似website.ext的url时,它会显示apache登录屏幕,首先您必须以http://登录,然后第二次以https://www.但这是有效的,你最终会达到目标。
有了cPanel,它就崩溃了。如果你试图以任何一个不合格的URL登录,你最终会出现超时,找不到页面,类似于:
www.website.ext401.shtml.
ext和401.html将一起运行,如您所见。主页面错误为:无法访问该网站。如果您尝试以身份登录https://www.website.ext它工作得很好。
修复cPanel问题很重要,VestaCP会很好。
在一位承包商朋友的大力帮助下,我在多个实时和开发(受限访问(网站上建立了我们的解决方案:
文件第一行的错误文档行解决了";ErrorDocument 401";启用Apache密码限制时cPanel中的问题
$website.$ext ==> your-website.com
$account ==> account folder of the home directory where the htpasswd file is stored; /home/home-folder
--------------剪--------------
ErrorDocument 401 default
# Redirect http to https
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^(.*)$ https://www.$website.$ext/$1 [L,R=301]
# BEGIN-APACHE-RESTRICTION
<If " %{HTTPS} != 'off' && %{HTTP_HOST} == 'www.$website.$ext'">
AuthType Basic
AuthUserFile /home/$account/htpasswd
AuthName "restricted area"
Require valid-user
</If>
# END-APACHE-RESTRICTION