2014-12-30 5 views
1

ОК, у меня есть область на моем сайте Wordpress, home/gallery/test, и я хочу ограничить доступ к ней с помощью .htaccess. Настройка аутентификации для каталога с использованием .htaccess довольно проста. Но моя проблема в wordpress заключается в том, что home/gallery/test фактически не существует как каталог нигде, потому что я использую красивые URL-адреса..htaccess аутентификация с wordpress

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

Любые мысли? Могу ли я установить что-то в домашнем каталоге .htaccess, чтобы понять, что это не весь сайт, а только home/gallery/test URL, который я хочу защитить?

Для получения информации см. Содержимое моего файла htaccess (обновлено, чтобы включить предлагаемое решение).

SetEnvIfNoCase Request_URI "^/home/gallery/test$" protected 

AuthType Basic 
AuthName "Forbidden" 
AuthUserFile /home/xxxxx/.htpasswd 
Require valid-user 
Order allow,deny 
Allow from all 
Deny from env=protected 
Satisfy any 

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} ^/(failed_auth\.html).*$ [NC] 
RewriteRule . - [L] 
</IfModule> 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

ответ

0

Существует решение, используя mod_setenvif

SetEnvIfNoCase REQUEST_URI "^/home/gallery/test" PROTECTED 

AuthType Basic 
AuthName "Test protection" 
AuthUserFile /path/to/passwords_file 
Require valid-user 
Satisfy any 
Order allow,deny 
Allow from all 
Deny from env=PROTECTED 

EDIT: принимая код HTAccess во внимание, он должен выглядеть так

SetEnvIfNoCase REQUEST_URI "^/home/gallery/test" PROTECTED 

AuthType Basic 
AuthName "Forbidden" 
AuthUserFile /home/xxxxx/.htpasswd 
Require valid-user 
Satisfy any 
Order allow,deny 
Allow from all 
Deny from env=PROTECTED 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteRule ^failed_auth\.html$ - [L] 

    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule^index.php [L] 
</IfModule> 
# END WordPress 
+0

Спасибо за ваш ответ. После некоторого разговора кажется, что по какой-то причине это все еще не запрашивает аутентификацию, и я могу свободно получить доступ к этому URL-адресу. Есть идеи? – DrNoFruit

+0

Я только что проверил свой код, и он работает, как и ожидалось, на моей стороне. Где находится ваш htaccess? –

+0

Он находится в общедоступном каталоге HTML. Интересно, есть ли что-то, что делает Wordpress? Я охотился вокруг и пробовал несколько разных вариантов того, что вы дали в своем оригинальном посте, но безрезультатно. – DrNoFruit

Смежные вопросы