我正在尝试通过普通 TYPO3 .htaccess 文件中的 AuthType 基本部分来保护较旧的 TYPO3 8.7 后端(/typo3)。 我总是以内部服务器错误告终。 有没有人这样做过? 这可能无法与符号链接一起使用吗?
我将这部分代码放在我的 .htaccess 之上(在所有 rwrite 开始之前):
SetEnvIf Request_URI ^.*/typo3.* require_auth=true
AuthType basic
AuthName "Admin Schutz"
AuthUserFile /usr/etc/.htpasswd
#Order Deny,Allow
#Deny from all
#Satisfy any
Require valid-user
Allow from env=!require_auth
感谢任何提示!
假设您的
/usr/etc/.htpasswd
文件可访问且有效(使用 htpasswd
命令 和 修改为 644
正确创建)您的示例 should 适用于 Apache 2.2
,但 not 在 Apache 2.4
根据这篇文章中的评论。从字面上看,在 2.4
中它会起作用,但您的根域也需要密码。
有两种解决方法。首先是使用简单的规则将额外的
.htaccess
文件放置在您的typo3
目录中,即如@Naderio所示:
AuthType basic
AuthName "Secret area!"
AuthUserFile /usr/etc/.htpasswd
require valid-user
Order deny,allow
Deny from all
Satisfy ANY
但是,如果您按照 TYPO3 文档中的建议创建了指向源的
typo3
符号链接和/或您不想为所有使用相同源的项目要求 BasicAuth,您可以直接在 VHOST 配置中覆盖这些设置,例如(假设你有所有的 TYPO3 项目,即在 /www/typo3/
文件夹中:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/www/typo3/project-x.loc"
ServerName project-x.loc
# below your valid paths for log files...
# ErrorLog "logs/project-x.loc-error_log"
# CustomLog "logs/project-x.loc-access_log" common
<Directory "/www/typo3/project-x.loc">
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Require all granted
</Directory>
<Directory "/www/typo3/project-x.loc/typo3">
AuthType basic
AuthName "Restricted in VHOST config!"
AuthUserFile /usr/etc/.htpasswd
require valid-user
Order deny,allow
Deny from all
Satisfy ANY
</Directory>
</VirtualHost>
注意:无论如何,我会检查您尝试使用
/usr/etc/
的路径是否完全可供Apache访问,也许最好将您的.htpasswd
文件移动到更靠近您的www
结构的地方,例如文件夹/www/etc/
并相应地修改上述规则?
应该与:
AuthType basic
AuthName "Secret area!"
AuthUserFile /usr/etc/.htpasswd
require valid-user
Order deny,allow
Deny from all
Satisfy ANY
抛出内部服务器错误,例如如果您的 AuthUserFile 路径不正确。
在这里,我写下了我的个人公共文档片段: https://www.entwicklertools.de/snippet-sammlung/htaccess-snippets/passwortschutz-einrichten/
感谢大家的回复
最后,我们还在 vhost 中使用“位置”-tag 通过以下代码完成了此操作。
<Location /typo3/>
AuthType Basic
AuthName "Enter Password"
AuthUserFile /www_data/.htpasswd4xyz
Require valid-user
</Location>
如果您无法编辑虚拟主机配置, 这条线应该在你的 .htaccess 中代替你的 SetEnvIf 工作:
SetEnvIfNoCase Request_URI ^/typo3/$ require_auth=true