如何使用htaccess限制对条目的访问?

时间:2011-07-07 15:58:18

标签: .htaccess expressionengine

我需要密码保护网站上的几个条目。在模板级别很容易做到,但这是在入门级别。我正在运行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是条目的实际名称。

任何帮助将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:1)

我就这个问题回答了两个similar questions,可能对您有所帮助。

尽管如此,有几种方法可以在ExpressionEngine网站中对页面进行密码保护:

  • 模板首选项管理器
  • 条件全局变量
  • 第三方插件

到目前为止,最简单的解决方案是使用ExpressionEngine控制面板中的内置Template Preferences Manager并将“私有”条目分配给需要身份验证的模板。

来自IntoEEtive的Yuri Salimovskiy的第三方插件如Entry Access可能会帮助您。 条目访问 可让您限制对某些成员或成员组的特定渠道条目的前端访问权限。

答案 1 :(得分:1)

虽然ExpressionEngine为Template Access Restriction提供了自己的密码保护页面和模板的方法 - 包括处理.htaccess Apache基本HTTP身份验证 - 但在某些情况下您可能不希望这样做,或者无法使用它:

如果您是DIY类型,则可以修改httpd.conf以限制和密码保护对ExpressionEngine页面,条目和模板的访问

这项技术的工作原理如下:

  1. 编辑Apache的httpd.conf
  2. 创建.htpasswd.htgroup个文件
  3. 指定要保护的网址
  4. 注意:由于我们尝试匹配URL级别的对象而不是物理文件系统,因此我们必须使用<Location><LocationMatch>指令 1

    将以下内容放入服务器的httpd.confvhost.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)。

      
        
    1. <Location>指令的context指定它只能用于server configvirtual host配置文件。这意味着我们无法将规则放在.htaccess文件中,否则Apache会抛出 500内部服务器错误,其描述为“此处不允许位置”。

           
          
      • 如果您尝试在网址级别匹配对象,则必须使用<Location>
      •   
      • 如果您尝试在文件系统级别匹配对象,则必须使用<Directory>和/或<Files>
      •   
    2.