
У меня есть сайт с виртуальной структурой каталогов, например, mysite.com/folder/title
который на самом деле является переписыванием .htaccess в mysite.com/f/index.php?p=title
. Я хочу защитить паролем папку folder
с помощью .htaccess и знаю, как это сделать с реальными папками. Но я не хочу защищать паролем основной сайт mysite.com
, и прямо сейчас, если я помещаю файл .htaccess в mysite.com
каталог, я защищаю mysite.com
и mysite.com/folder
. Я также пробовал защищать mysite.com/f
.
Как защитить только mysite.com/folder
с помощью .htaccess?
Содержимое .htaccess mysite.com
.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^folder/(.*)$ /f/index.php?p=$1 [PT,L,QSA]
RewriteRule ^folder/*$ /f/index.php [L,QSA]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Файл .htaccess, который я попробовал, mysite.com/f
успешно защищает весь сайт при перемещении в другой файл .htaccess, поэтому я знаю, что путь правильный.
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/myusername/.htpasswd
решение1
Прежде всего, вам не следует помещать эту конфигурацию (правила перезаписи) в файлы .htaccess, вам следует поместить ее в основной файл конфигурации в разделе Directory (предполагая, что у вас есть доступ к этому файлу).Документация Apache объясняет, почему.
Вам следует проверить, что у вас правильные настройки AllowOverride. Если все настроено правильно, то для защиты паролем достаточно, чтобы указанный вами файл .htaccess находился в папке mysite/f.