2012-03-05 2 views
0

У меня есть это правило HTAccess блокировать все запросы .xml:.htaccess запретить все, кроме?

<Files ~ "\.xml$"> 
Order allow,deny 
Deny from all 
Satisfy all 
</Files> 

Однако, мне нужно, чтобы один определенный XML-файл. Как следует переписать правило?

Кроме того, выше этого правила, у меня есть исключение, как это:

RewriteRule ^(myxml\.xml)$ $1 [L] 

Но что до сих пор не разрешает файл.

ответ

1

Apache Regexp Engine совместим с PCRE, поэтому почему бы не использовать регулярное выражение с отрицательным утверждением lookbehind "(?<!\bmyxml)\.xml$"?

Это говорит о совпадении с чем-то, заканчивающимся на .xml, если ему не предшествует myxml. Это означает, что правило не будет срабатывать для myxml.xml, поэтому оно не будет отклонено.

BTW FilesMatch предпочтительнее файлов ~ согласно документам Apache. Не спрашивай меня, почему.

+0

Привет, спасибо за ваш ответ. Итак, каков будет окончательный код? Удалить два исходных правила? –

+0

Удалите перезапись. Замените regexp в , чтобы получить ''. Извините, я подумал, что я объяснил себе :-) – TerryE

+0

Сообщите мне, если это сработало и отметьте/повысьте соответственно :-) – TerryE

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