Как использовать htaccess для ограничения доступа к записям? - PullRequest
0 голосов
/ 07 июля 2011

Мне нужно защитить паролем пару записей на сайте. Это легко сделать на уровне шаблона, но это на начальном уровне. Я использую 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 - это имя фактической группы шаблонов, а entry_name - это фактическое имя записи.

Любая помощь будет оценена.

Спасибо.

Ответы [ 2 ]

1 голос
/ 08 июля 2011

В то время как ExpressionEngine предоставляет собственные средства для Ограничение доступа к шаблонам для защищенных паролем страниц и шаблонов & mdash; включая обработку .htaccess Базовая HTTP-аутентификация Apache & mdash; Существуют ситуации, когда вы можете не захотеть или не можете его использовать:

Если вы работаете самостоятельно, вы можете изменить httpd.conf, чтобы ограничить и защитить паролем доступ к страницам, записям и шаблонам ExpressionEngine .

Эта техника работает:

  1. Редактирование Apache httpd.conf
  2. Создание .htpasswd или .htgroup файлов
  3. Указание URL-адресов для защиты

Примечание. Поскольку мы пытаемся сопоставить объекты на уровне URL, а не физическую файловую систему, мы должны использовать директиву <Location> или <LocationMatch> 1 . * 1047. *

Добавьте в файл httpd.conf или vhost.conf вашего сервера следующее:

<LocationMatch "^/private">
    AuthName "Restricted Area"
    AuthType Basic
    AuthUserFile /path/to/website/.htpasswd
    AuthGroupFile /dev/null
    Require valid-user
</LocationMatch>

Обязательно измените значения директивы по своему вкусу и в среде хостинга.

Если вы этого еще не сделали, создайте файл паролей .htpasswd для шифрования требуемых паролей с помощью командной строки или Online .htaccess Password Generator :

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.


Вуаля & mdash; Защищенные паролем каталоги Apache, работающие в гармонии с ExpressionEngine (или любой другой CMS, такой как WordPress, MovableType или TextPattern).

  1. Контекст * директивы <Location> указывает, что он может использоваться только в файлах конфигурации server config и virtual host. Это означает, что мы не можем поместить правила в файл .htaccess, в противном случае Apache выдаст 500 Internal Server Error с описанием «Расположение здесь не разрешено».

    • Если вы пытаетесь сопоставить объекты на уровне URL, вы должны использовать <Location>
    • Если вы пытаетесь сопоставить объекты на уровне файловой системы, вы должны использовать <Directory> и / или <Files>
1 голос
/ 07 июля 2011

Я ответил на два похожих вопроса по этому вопросу, которые могут быть вам полезны.

Тем не менее, есть несколько способов защитить страницы паролем на сайте ExpressionEngine:

  • Диспетчер предпочтений шаблона
  • Условные глобальные переменные
  • Сторонние дополнения

Безусловно, самое простое решение вашей ситуации - использовать встроенный Диспетчер предпочтений шаблона в панели управления ExpressionEngine и назначать «частные» записи шаблону, который требует аутентификации.

Сторонние дополнения, такие как Entry Access от Юрия Салимовского из IntoEEtive, могут помочь вам. Доступ к записи позволяет ограничить интерфейсный доступ к определенным записям канала для определенных участников или группы участников.

...