我正在尝试使用密码保护我的电子商务类别,因此我使用 htaccess 方法。我正在使用 Prestashop,并使用其集成模块生成一个 .htaccess 文件,以便获得一个简短的 URL(使用 RewriteRule)现在我在该文件的末尾添加了以下几行:
<LocationMatch "/category-2">
AuthType Basic
AuthName "By Invitation Only"
AuthBasicProvider file
AuthUserFile /pwdfile #it is in the same directory of .htaccess
Require user pippo
</LocationMatch>
但是有了这些行,该网站的每个页面都会给我一个“500 内部服务器错误”页面。我读过 apache 文档,但这些行似乎是正确的。我使用 notepad++ 创建了 pwdfile,因为我无法访问服务器的 shell,所以我无法按照 apache 的 howto 中的建议使用 htpasswd。
有什么建议为什么我会收到这个错误?
谢谢
答案1
对不起,但这是非常错误的,原因有几个。
不要——我的意思是——不要将密码文件放在与 .htaccess 相同的目录中。您的网站将立即被拥有并开始显示裸体图片。
假设你用 Notepad++ 创建了 .htaccess,除非你用 unix 终止符保存文件,否则我感觉 apache 不会喜欢 CRLF 终止符
鉴于您没有使用 htpasswd 来生成 pwdfile,那么您在 pwdfile 中放了什么呢?
“/pwdfile” 永远不会起作用 - 需要一个绝对路径名,它将类似于 /var/www/html/blah/fuz...但我已经告诉过你 pwdfile 应该远离你的 DocumentRoot,不是吗?
据我所知,“AuthBasicProvider 文件”是一个相当新的指令 - 服务器上的 apache 版本可能不支持它。
从政策上来说,应该避免使用 .htaccess,就像基本授权一样。(但这一点与上面相比微不足道)
抱歉,您似乎不太了解自己要做的事情,而且您的托管服务没有提供您所需的管理支持级别 - shell 访问肯定会有所帮助。这两个问题都需要解决。