我在这个(本该是)简单的任务上浪费了好几个小时。我想限制对我网站的访问,该网站位于我的服务器上的 /var/www/ 中。
我已使用 httpasswd 成功创建了 /etc/apache2/passwords 文件(用户 primoz)。我已将 .htaccess 放入 /var/www/,内容如下:
AuthType Basic
AuthName "RestrictedFiles"
AuthBasicProvider file
AuthUserFile /etc/apache2/passwords
Require user primoz
我的网站仍然可以访问。我还尝试编辑 /etc/apache2/sites-enabled/000-default - 行AllowOverride 无到允许覆盖全部。不用说,它没有做出任何改变。
限制真得这么令人沮丧吗?
编辑: /etc/apache2/httpd.conf默认情况下是空的,因为我在 Debian 上运行服务器 - 它使用 apache2.conf。
这里是整个 apache2.conf。
答案1
我能够解决这个问题。/etc/apache2/sites-enabled/000-默认有 AllowOverride 无代替允许覆盖全部。
我确信我更改了它,但我想当它不起作用时我恢复了文件(不记得为什么 - 可能是其他配置错误)。无论如何,第一段是解决方案。
答案2
通过启用.htaccess httpd.conf
,然后将此代码放在您的目录.htaccess
下DOCUMENT_ROOT
:
AuthType Basic
AuthName "RestrictedFiles"
AuthUserFile /etc/apache2/passwords
Require valid-user
还要确保 mod_authn_core 已启用。
答案3
只看一下我的(正在使用中):
AuthUserFile /var/www/www.site.com/htdocs/.htpasswd
AuthName Password_secure
AuthType Basic
require valid-user
您还应该编辑您的apache2.conf
并确保已启用以下功能:
LoadModule rewrite_module modules/mod_rewrite.so
以及选项/允许:
<Directory /your/path>
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Satisfy all
</Directory>
如果用于虚拟主机,那么该块需要位于<VirtualHost></VirtualHost>
标签内。
除此之外,如果不查看完整信息,很难发现导致问题的原因apache2.conf