.htaccess 在 Linux (Debian) apache2 (Google Cloud) 中不起作用

.htaccess Is Not working in Linux (Debian) apache2 (Google Cloud)

提问人:Marcos Camargo 提问时间:7/26/2023 最后编辑:Marcos Camargo 更新时间:7/27/2023 访问量:68

问:

我知道这个话题已经被讨论得死去活来,但我仍然没有看到有关如何调试此问题的说明。我知道 .htaccess 文件正在被读取,因为我在其中添加了一些胡言乱语,这破坏了网站。我还创建了 .htpasswd 文件。问题是该网站不需要用户名和密码。如何调试此问题?

这是在:/etc/apache2/apache2.conf

<Directory /var/www/>
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

这是在:/var/www/html/.htaccess

AuthType Basic
AuthName "Área restrita"
AuthUserFile /etc/apache2/.htpasswd
require valid-user

我没有另一个.这是我拥有的唯一虚拟机,它是托管站点的虚拟机。 在这些文件中指定,如下所示:vHostDocumentRoot

sites-available/000-default.conf:       DocumentRoot /var/www/html
sites-available/default-ssl.conf:       DocumentRoot /var/www/html

我放置了另一个文件,其中与 .目的是保护 perl 脚本。.htaccess/usr/lib/cgi-bin/var/www/html

URL 已 http://recordspreservation.org

我现在也在尝试使用此指令限制对我网站的访问。我不确定这是否对问题有影响:.htaccess

<Location />
    Require ip 107.217.8.189
</Location>

这些是我在 .它们中的大多数是默认的(即我没有更改它们)。我可能担心的是Directory/etc/apache2/home/*/public_html

conf-available/gitweb.conf:               <Directory /usr/share/gitweb>
conf-available/gitweb.conf:               </Directory>
conf-available/javascript-common.conf:    <Directory "/usr/share/javascript/">
conf-available/javascript-common.conf:    </Directory>
conf-available/serve-cgi-bin.conf:        <Directory "/usr/lib/cgi-bin">
conf-available/serve-cgi-bin.conf:        </Directory>
conf-enabled/gitweb.conf:                 <Directory /usr/share/gitweb>
conf-enabled/gitweb.conf:                 </Directory>
conf-enabled/javascript-common.conf:      <Directory "/usr/share/javascript/">
conf-enabled/javascript-common.conf:      </Directory>
conf-enabled/serve-cgi-bin.conf:          <Directory "/usr/lib/cgi-bin">
conf-enabled/serve-cgi-bin.conf:          </Directory>
mods-available/alias.conf:                <Directory "/usr/share/apache2/icons">
mods-available/alias.conf:                </Directory>
mods-available/userdir.conf:              <Directory /home/*/public_html>
mods-available/userdir.conf:              </Directory>
mods-enabled/alias.conf:                  <Directory "/usr/share/apache2/icons">
mods-enabled/alias.conf:                  </Directory>
sites-available/default-ssl.conf:         <Directory /usr/lib/cgi-bin>
sites-available/default-ssl.conf:         </Directory>

命令的结果sudo apachectl -M | grep auth

 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)

谢谢!

.htaccess 谷歌云平台 debian .htpasswd

评论

0赞 Giacomo Catenazzi 7/26/2023
也许,通过开始阅读官方文档?或者告诉我们它不起作用的地方。在 apache 配置中,您可以选择可以覆盖的选项(以及从何处覆盖)。我们缺乏信息,所以我们无能为力。而且可能这不是一个编程问题。
2赞 MrWhite 7/26/2023
“/etc/apache2/apache2.conf” - 这是相关的配置吗?您有单独的虚拟主机吗?从你发布的内容来看,有一个小小的奇怪之处,你有一个容器,但文件在?什么是?有没有更具体的容器?还有其他文件吗?您请求的是什么 URL?<Directory>/var/www/.htaccess/var/www/html/DocumentRoot<Directory>.htaccess
0赞 MrWhite 7/26/2023
此文件中还有其他指令吗?我会尝试一个简单的而不是您当前的指令 - 访问是否被阻止?.htaccessRequire all denied
0赞 John Hanley 7/27/2023
MrWhite 的评论可能会帮助您调试问题。您提供的详细信息似乎正确无误。将配置添加到您的帖子中。重新启动系统。然后运行 .将命令和输出添加到您的问题中。为了保持一致,请更改为 。指令不区分大小写,但要保持一致。<Directory /var/www/html>apachectl -M | grep authrequireRequire

答:

3赞 MrWhite 7/27/2023 #1

我现在也在尝试用这个来限制对我网站的访问 命令。我不确定这是否对 .htaccess 问题有影响:

<Location />
    Require ip 107.217.8.189
</Location>

目前尚不清楚您最初是否有这些指令,或者这是您后来添加的内容,但是是的,这些确实会产生“影响”。

这将有效地覆盖文件中的 HTTP 身份验证指令,并授予对 IP 的访问权限。系统不会提示您输入用户名/密码,因为访问权限已通过其他方式授予。.htaccess

<Location>部分合并在 和 部分之后。<Directory>.htaccess

如果您想同时强制执行这两项命令,那么系统会提示您(从您的 IP 地址)输入用户名/密码(并且来自其他 IP 的用户被简单地阻止),那么您也许可以添加到阻止中(默认值为 )。例如:AuthMerging And<Location>Off

<Location />
    AuthMerging And
    Require ip 107.217.8.189
</Location>

这可确保授权逻辑与最近的前置逻辑相结合。尽管这确实假设所讨论的文件是最接近的前身;它可能不是。.htaccess