Исключение из правила RewriteCond

[Удален]
1855

В общем суть проблемы такова.

В .htaccess созданы правила:


RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} \.php|\.ini|\.xml [NC]
RewriteCond %{REQUEST_URI} \/plugins\/ [OR]
RewriteCond %{REQUEST_URI} \/templates\/ [OR]
RewriteCond %{REQUEST_URI} \/xmlrpc\/
RewriteRule ^(.*)$ index.php [R=404,L]

Всё бы хорошо, но вот понадобился доступ к одному из планинов непосредственно из админки самого плагина, понятно что на время настроек можно закоментить строку RewriteCond %{REQUEST_URI} \/plugins\/ [OR] но всё дело в том что нужен постоянный доступ только к одному плагину и если коментить строку то доступ будет ко всем...

В связи с этим и вопрос:

Как прописать исключение из данного правила, не прописывая при этом правила для всех остальных плагинов?

J
На сайте с 20.02.2014
Offline
120
jkm
#1

Достаточно вставить выше ваших запрещающих правил такое:


RewriteRule ^plugins/file.php$ - [L]
[Удален]
#2

не прокатывает(


RewriteRule ^plugins/xxx/$ [L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} \.php|\.ini|\.xml [NC]
RewriteCond %{REQUEST_URI} \/plugins\/ [OR]
RewriteCond %{REQUEST_URI} \/templates\/ [OR]
RewriteCond %{REQUEST_URI} \/xmlrpc\/
RewriteRule ^(.*)$ index.php [R=404,L]

пробовал также

RewriteRule ^plugins/xxx/file.php$ [L]

RewriteRule ^plugins/xxx/.php$ [L]

RewriteRule ^plugins/xxx/admin/file.$ - [L]

RewriteRule ^/plugins/xxx/admin/(.*)$ - [L]

RewriteRule ^/plugins/xxx/(.*)$ - [L]

RewriteRule ^/plugins/xxx/admin/(.*)$ [L]

RewriteRule ^/plugins/xxx/(.*)$ [L]

вставлял и до и после, всяко...

J
На сайте с 20.02.2014
Offline
120
jkm
#3

А если так


RewriteRule ^plugins/xxx/ - [L]
[Удален]
#4
jkm:
А если так

И так тоже не алё...

и так

RewriteCond %{REQUEST_URI} \/plugins\/xxx\/

RewriteRule ^/$ [L]

тоже не алё(((

siv1987
На сайте с 02.04.2009
Offline
427
#5

Слеши экранировать не нужно.

monwm:
не прокатывает(
RewriteRule ^plugins/xxx/$ [L]

А если внимательно посмотреть на синтаксис?

jkm:
RewriteRule ^plugins/file.php$ - [L]

RewriteEngine On

RewriteRule ^plugins/path/to/file\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} -f

RewriteCond %{REQUEST_URI} \.php|\.ini|\.xml [NC]

RewriteCond %{REQUEST_URI} /templates/ [OR]

RewriteCond %{REQUEST_URI} /plugins/ [OR]

RewriteCond %{REQUEST_URI} /xmlrpc/

RewriteRule ^(.*)$ index.php [R=404,L]

Чтобы проверить набираем в адресной строке /plugins/path/to/file.php

Если плагин отдельная папка:

RewriteRule ^plugins/myplugin/ - [L]

[Удален]
#6
siv1987:
Слеши экранировать не нужно.

А если внимательно посмотреть на синтаксис?


RewriteEngine On
RewriteRule ^plugins/path/to/file\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} \.php|\.ini|\.xml [NC]
RewriteCond %{REQUEST_URI} /templates/ [OR]
RewriteCond %{REQUEST_URI} /plugins/ [OR]
RewriteCond %{REQUEST_URI} /xmlrpc/
RewriteRule ^(.*)$ index.php [R=404,L]

Чтобы проверить набираем в адресной строке /plugins/path/to/file.php

Если плагин отдельная папка:
RewriteRule ^plugins/myplugin/ - [L]

Хоть тресни не работает(((

J
На сайте с 20.02.2014
Offline
120
jkm
#7
monwm:
Хоть тресни не работает(((

Ну, самый очевидный вариант, почему может не работать — .htaccess находится в корне сайта, а плагин в /folder/plugins/xxx/

Тогда стоит убрать ^ из шаблона.


RewriteRule plugins/xxx/ - [L]
J
На сайте с 20.02.2014
Offline
120
jkm
#8

Другой вариант с использованием RewriteCond


RewriteCond %{REQUEST_URI} !/plugins/xxx/
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} \.php|\.ini|\.xml [NC]
RewriteCond %{REQUEST_URI} /templates/ [OR]
RewriteCond %{REQUEST_URI} /plugins/ [OR]
RewriteCond %{REQUEST_URI} /xmlrpc/
RewriteRule ^(.*)$ index.php [R=404,L]

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий