我需要密码保护网站上的几个条目。在模板级别很容易做到,但这是在入门级别。我正在运行Expression Engine。
我尝试设置htaccess文件,但它尚未生效。
就像这样:
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/server/.htpasswds/.htpasswd
AuthGroupFile /dev/null
<Files template_group/entry_name>
require valid-user
</Files>
其中template_group是实际template_group的名称,entry_name是条目的实际名称。
任何帮助将不胜感激。
感谢。
答案 0 :(得分:1)
我就这个问题回答了两个similar questions,可能对您有所帮助。
尽管如此,有几种方法可以在ExpressionEngine网站中对页面进行密码保护:
到目前为止,最简单的解决方案是使用ExpressionEngine控制面板中的内置Template Preferences Manager并将“私有”条目分配给需要身份验证的模板。
来自IntoEEtive的Yuri Salimovskiy的第三方插件如Entry Access可能会帮助您。 条目访问 可让您限制对某些成员或成员组的特定渠道条目的前端访问权限。
答案 1 :(得分:1)
虽然ExpressionEngine为Template Access Restriction提供了自己的密码保护页面和模板的方法 - 包括处理.htaccess Apache基本HTTP身份验证 - 但在某些情况下您可能不希望这样做,或者无法使用它:
例如,ExpressionEngine的Freelancer Version不包含Member Management Module,因此Template Preferences Manager不提供访问限制。
此外,如果您选择使用ExpressionEngine的HTTP身份验证,则只有具有成员帐户[在ExpressionEngine中]的用户才能登录,因为EE使用其本地成员数据库进行身份验证。
如果您是DIY类型,则可以修改httpd.conf
以限制和密码保护对ExpressionEngine页面,条目和模板的访问。
这项技术的工作原理如下:
httpd.conf
.htpasswd
或.htgroup
个文件 注意:由于我们尝试匹配URL级别的对象而不是物理文件系统,因此我们必须使用<Location>
或<LocationMatch>
指令 1 。
将以下内容放入服务器的httpd.conf
或vhost.conf
文件中:
<LocationMatch "^/private">
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/website/.htpasswd
AuthGroupFile /dev/null
Require valid-user
</LocationMatch>
请务必根据自己的喜好和托管环境更改指令的值。
如果您还没有,请使用命令行或Online .htaccess Password Generator创建.htpasswd
密码文件以加密所需的密码:
htpasswd -c /path/to/website/.htpasswd username
如果htpasswd命令不在Unix路径中,则必须输入文件的完整路径才能使其运行。在我的服务器上,它将是:
/usr/sbin/htpasswd -c /path/to/website/.htpasswd username
然后,htpasswd会询问您用户的密码,并要求您再次输入密码以确认:
# htpasswd -c /path/to/website/.htpasswd username
New password: changeme
Re-type new password: changeme
Adding password for user username
在一切就绪和有效的情况下,任何对/private*
的请求都将由Apache处理,然后才会被路由到ExpressionEngine。
Voilà - Apache密码保护目录与ExpressionEngine(或任何CMS真正协同工作,如WordPress,MovableType或TextPattern)。
- 醇>
<Location>
指令的context指定它只能用于server config
和virtual host
配置文件。这意味着我们无法将规则放在.htaccess
文件中,否则Apache会抛出 500内部服务器错误,其描述为“此处不允许位置”。
- 如果您尝试在网址级别匹配对象,则必须使用
<Location>
- 如果您尝试在文件系统级别匹配对象,则必须使用
<Directory>
和/或<Files>