.htacess запрещает доступ к подкаталогам, но поддерживает URL (Force 403?) - PullRequest
0 голосов
/ 28 декабря 2011

Я продолжаю приближаться к тому, что хочу, но я не совсем там. По сути, мне нужно заблокировать прямой доступ к подкаталогу, но обрабатывать его как пользовательское сообщение об ошибке, а не как перенаправление. Мне нужно сохранить URL-адрес, чтобы файл index.php мог увидеть запрошенное имя файла, отфильтровать разрешения для участников сайта и затем вернуть сам файл. Я думаю, если я смогу вызвать ошибку 403 при отказе в доступе, тогда ErrorDocument вступит во владение. Следующий .htaccess находится в каталоге files_dir. ErrorDocuments уже работает для меня некоторое время, но отказ в доступе создает проблемы:

<Files ~ "^/files_dir/protected_dir/.*$">
Order allow,deny
Deny from all
Satisfy All
</Files>
ErrorDocument 404 /files_dir/index.php
ErrorDocument 403 /files_dir/index.php
ErrorDocument 405 /files_dir/index.php

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Я бы подошел к этому правилу переписывания:

RewriteCond %{PATH_INFO} ^/files_dir/protected_dir/ [NC]
RewriteRule .* - [F]

Это не вызовет перенаправления (URL-адрес останется без изменений в браузере), но вернет 403 Запрещено.

0 голосов
/ 29 декабря 2011

Не понимаю, зачем Apache отправлять 403. Вы можете просто сделать это с помощью php. Единственное, что вам нужно, это переписать все URL в защищенном каталоге в index.php.

RewriteRule ^protected_dir/ index.php

тогда в php

if( !$logged_in )
{
  header('HTTP/1.1 403 Forbidden');
  echo 'not allowed. etc.';

...
...