2015-10-27 6 views
1

Правила сильфону должен блокировать любой прямой доступ ко всем файлам *.php:Разрешить прямой доступ к конкретному файлу PHP

RewriteCond %{THE_REQUEST} ^.+?\ [^?]+\.php[?\ ] 
RewriteRule \.php$ - [F] 

Есть ли способ, чтобы исключить один или два PHP файлы, которые будут игнорироваться этого глобальным правилом?

пример:

всех *.php файлов (игнорируется, если доступ непосредственно)

cronjob.php, specialpage.php (должно быть проигнорировано правило, выше, и прямой доступ должен быть разрешен.)

пожалуйста, вы можете показать пример (1) или (2 или более) файлов.

PS: Если такое правило для исключения этих файлов существует, какой флаг необходимо применять? [L] или [R,L] или ????

ответ

2

Вы можете использовать отрицание в RewriteRule:

RewriteCond %{THE_REQUEST} ^.+?\ [^?]+\.php[?\ ] [NC] 
RewriteRule !(^|/)(cronjob|specialpage)\.php$ - [F,NC] 
+0

ли я по-прежнему необходимо включить 'RewriteRule \ .php $ - [F]' за ваше правило отрицания? –

+0

и для одной страницы это будет: 'RewriteRule!^Cronjob \ .php $' - [F, NC]? –

+0

Да, это правильно для второго вопроса и не нужно использовать 'RewriteRule \ .php $ - [F]' (его следует заменить на 'RewriteRule!^(Cronjob | specialpage) \. Php $ - [F, NC] ') – anubhava

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