我已将服务器设置为要求对所有目录进行身份验证。我正在使用 Apache 的 mod_auth_form 生成内联登录表单,以保留 HTTP_REQUEST 以便模块可以将用户保留在他们在显示登录表单时指定的任何文件/目录中。
我的问题是:我导航到域(example.com)并显示登录表单。好的。我使用不正确的凭据登录,登录表单再次显示。好的。我输入正确的凭据,收到内部服务器 500 错误。
但是,我不明白的奇怪之处是,如果我要访问一个目录(example.com/images/),登录表单会按原样显示,如果我登录,它会正确登录并显示/images 的目录索引。这适用于任何子目录,甚至适用于我在 http.conf 中创建的任何别名子目录。
唯一一次搞砸只是在根/域级别。我迷路了。
这是来自 http.conf 的相关信息 - 如果需要任何进一步的信息,请告诉我。
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
<Directory />
Options FollowSymLinks Indexes
AllowOverride All
Require all granted
</Directory>
--------------------------------------------------------
DocumentRoot "E:/"
# This should be changed to whatever you set DocumentRoot to.
# ======================================================
# !!! DO NOT CHANGE THIS LINE AND THE FOLLOWING ONES !!!
# DocumentRootDirectory
<Directory "E:/">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
--------------------------------------------------------
<IfModule alias_module>
Alias /images_easyphp "${path}/home/server_images"
<Directory "${path}/home/server_images">
Options Indexes MultiViews
AllowOverride None
Allow from all
Require all granted
</Directory>
<Directory "E:/">
Options FollowSymLinks Indexes
AuthFormProvider file
AuthType form
AuthName "Restricted Access"
Session On
SessionCookieName session path=/
require valid-user
ErrorDocument 401 /WWW/login/index.php
AuthUserFile "c:/server/apache/passwd"
</Directory>
<Directory "E:/WWW/login">
Options FollowSymLinks Indexes
Order allow,deny
Allow from all
Require all granted
</Directory>
<Location /logout>
SetHandler form-logout-handler
AuthFormLogoutLocation http://domain.com
Session On
SessionMaxAge 1
SessionCookieName session path=/
</Location>
ScriptAlias /cgi-bin/ "${path}/apache/cgi-bin/"
</IfModule>
另外值得一提的是,如果我访问一个子目录并成功登录,我可以返回根/域级别,它加载得很好,没有 500 错误。