Ограничить доступ в apache за исключением одного URL-адреса при использовании «основного файла» и mod_rewrite

1095
Craig Silver

Я успешно применил базовую аутентификацию ко всему моему сайту, но теперь я хочу сделать исключение для определенного шаблона URL. Из того, что я понимаю, я могу использовать директиву, но пока она не работает.

Возможно, что усложняет дело, так это то, что каждая страница моего сайта на самом деле является /master.php, и единственной разницей между страницами является строка запроса, которая инструктирует master.php вставлять контент, специфичный для этой страницы. Это дает мне действительно простое решение для кожи. Вместе с mod_rewrite у меня есть дружественные URL-адреса, такие как:

mysite.com/stats mysite.com/about 

которые переписываются на:

mysite.com/master.php?p=stats mysite.com/master.php?p=about 

В этой настройке возможно ли требовать аутентификацию для всего сайта, кроме, например, / about? Обратите внимание, что / about может иметь строку запроса после нее, поэтому мне нужно сделать исключение для шаблона URL, а не только для конкретного URL.

Если это имеет какое-то значение, вот некоторые особенности:

  • Ubuntu 15.04
  • Apache 2.4.10
  • Мои переписанные файлы находятся в файле site.conf, а не в файлах .htaccess.
0
Проверьте эту тему и настройте ее в своих URI: http://stackoverflow.com/questions/8731109/getting-authentication-required-when-requesting-instead-of-index-php?rq=1 h0ch5tr4355 9 лет назад 0
Это сработало отлично, спасибо! Как я должен принять это как ответ? Кроме того, это плохая форма, чтобы ответить со ссылкой вместо фактического ответа, так как содержимое на связанной странице может измениться или исчезнуть, или это только для содержимого не StackExchange? Craig Silver 9 лет назад 0
Вы отправили сообщение в Superuser, и моя ссылка принадлежит stackoverflow, поэтому я не могу пометить как дубликат, вы можете ответить на свой вопрос или я могу это сделать, если вы ничего не изменили в другой теме. h0ch5tr4355 9 лет назад 0

1 ответ на вопрос

0
h0ch5tr4355

Using mod_setenvif:

SetEnvIf Request_URI "^/about$" allow=yes AuthType Basic AuthName "Password Required" AuthUserFile /var/www/webinterface/.htpasswd Options +FollowSymLinks Order Deny,Allow Satisfy any Deny from All Require valid-user Allow from env=allow 

→ bottom part blocks entire content except if you are logged in or if allow=yes, which is only set if the request uri is the about site.

reference: https://stackoverflow.com/questions/8731109/getting-authentication-required-when-requesting-instead-of-index-php?rq=1

Я также скопирую свой комментарий / вопрос из StackOverflow: вам не нужно помещать блок, начинающийся с AuthType, в , или же и т.д. директива? Craig Silver 9 лет назад 0
не уверен о чем ты h0ch5tr4355 9 лет назад 0
Трудно объяснить в комментарии. Когда я скопировал и вставил вышеупомянутые строки в мой файл .conf и перезапустил Apache, он пожаловался с ошибкой AH00526: «AuthType здесь не разрешен». (Обратите внимание, что я получил ошибку только после выполнения: systemctl status apache2.service.) Именно тогда я помещаю все, начиная с AuthType и заканчивая Allow from env = allow между, Как только я сделал это и перезапустил, это сработало. Craig Silver 9 лет назад 0

Похожие вопросы