LINUX.ORG.RU

mod_rewrite закрыть папку только для прямого доступа

 ,


0

1

Приветствую участников форума! Подскажите на какие переменные окружения опиратся чтобы отфильтровать такой экшен? А конкретнее:

На сервере имеется файл %{DOCUMENT_ROOT}/.htaccess который перенаправляет запросы к %{DOCUMENT_ROOT}/includes/*.php. Необходимо чтобы все прямые запросы к этой папке и ко всем *.php файлам, закрыть или перенаправить. Кпримеру

Так можно: /test.php -> /includes/test.php Так нельзя: /includes/test.php

При обращении к /test.php, заметил что переменные %{REQUEST_URI} и %{REDIRECT_URL} равны, но при прямом реквесте к /includes/test.php, переменная %{REDIRECT_URL} вообще отсутствует. На основе этого попытался использовать конструкцию в /includes/.htaccess:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^(.*)$ RewriteCond %{REDIRECT_URL} !%1 RewriteRule .* - [F=403,L,NC]

Но что-то не клеется.

domik_v_derevne
() автор топика
Ответ на: комментарий от domik_v_derevne

Сделал при использовании кастомных переменных окружения.

/.htaccess RewriteEngine On RewriteCond %{REQUEST_URI} ^/([^/]*).php$ RewriteCond %{DOCUMENT_ROOT}/includes/%1.php -f RewriteRule . /includes/%1.php [L,QSA,E=rewritten:1]

/includes/.htaccess RewriteEngine On RewriteCond %{ENV:REDIRECT_rewritten} !1 RewriteRule .* - [F=403,L,NC]

domik_v_derevne
() автор топика
Ответ на: комментарий от domik_v_derevne

[[дубль форматированного поста]]

Сделал при использовании кастомных переменных окружения.

/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/([^/]*).php$
RewriteCond %{DOCUMENT_ROOT}/includes/%1.php -f
RewriteRule . /includes/%1.php [L,QSA,E=rewritten:1]

/includes/.htaccess
RewriteEngine On
RewriteCond %{ENV:REDIRECT_rewritten} !1
RewriteRule .* - [F=403,L,NC]
domik_v_derevne
() автор топика
Ответ на: комментарий от domik_v_derevne

Еще одно замечание

У меня здесь два сервера, на одном это условие не срабатывает:

RewriteCond %{ENV:REDIRECT_rewritten} !1
но работает вот это:
RewriteCond "%{ENV:REDIRECT_rewritten}" !"=1"

кстати последнее описано в доке:

https://httpd.apache.org/docs/2.4/rewrite/advanced.html#setenvvars

На другом в точности до наоборот.

domik_v_derevne
() автор топика

Продолжайте наблюдения.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.