.htaccess 保护符号链接的 TYPO3 后端

.htaccess protect symlinked TYPO3 backend

我正在尝试通过普通 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

感谢任何提示!

适用于:

AuthType        basic
AuthName        "Secret area!"
AuthUserFile    /usr/etc/.htpasswd
require         valid-user
Order           deny,allow
Deny            from all
Satisfy         ANY

抛出内部服务器错误,例如如果您的 AuthUserFile 路径不正确。

这里我写下了我个人 public 文档的片段: https://www.entwicklertools.de/snippet-sammlung/htaccess-snippets/passwortschutz-einrichten/

假设您的 /usr/etc/.htpasswd 文件可访问且有效(使用 htpasswd 命令正确创建 并且 修改为 644)您的示例 [根据 comments in this post,=35=]应该 适用于 Apache 2.2,但 不适用于 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 文档 and/or 中的建议创建了指向源的 typo3 符号链接,您不希望所有使用相同源的项目都需要 BasicAuth,您可以覆盖这些直接在 VHOST 配置中设置(假设您拥有所有 TYPO3 项目,即在 /www/typo3/ 文件夹中:

<VirtualHost *:80>

    ServerAdmin your@email.tld
    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>

注意:无论如何,我会检查 Apache 是否可以访问您尝试使用 /usr/etc/ 的路径,也许最好将您的 .htpasswd 文件移到更靠近您的 www 结构类似于文件夹 /www/etc/ 并相应地修改上述规则?

感谢所有回复。

最后,我们还在 vhost 中使用“location”-tag 通过以下代码完成了此操作。

 <Location /typo3/>
            AuthType Basic
            AuthName "Enter Password"
            AuthUserFile /www_data/.htpasswd4xyz
            Require valid-user
    </Location>

如果您无法编辑虚拟主机配置, 此行应该代替 .htaccess 中的 SetEnv 工作,进入:

SetEnvIfNoCase Request_URI ^/typo3/$ require_auth=true