[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mod_rewrite
ILYA
Сервер Apache 2.2.23
Привожу упрощённый вариант содержимого файла .htaccess
RewriteEngine On
RewriteBase /

RewriteRule ^(administrator|pma|stat)/?$ $1/index\.php [L]
RewriteRule ^(\w+)/?$ index\.php\?view=$1 [L]
RewriteRule ^(\w+)/[\w\-']*\-(\d+)\.html/?$ index\.php\?view=$1&id=$2 [L]
RewriteRule .* - [F,L]

Задумка была такая:
1 попадающие под правила URL-ы преобразовать, и первое соответствие правилу должно стать единственным, как я думал флаг L должен вести себя именно так;
2 а все запросы, для которых не подошло ни одно из правил, заблокировать.

В документации к mod_rewrite сказано, что флаг L должен прекратить разбор правил если текущее правило удовлетворяет условию. Но этого не происходит. Данный код блокирует абсолютно все запросы, даже если они попадают под правила, расположенные выше.
http://ew/administrator
http://ew/dir
http://ew/list/List-1-1.html

Почему так получается?
Я не правильно понял документацию, или его нужно как-то на сервере настроить или что то я сделал не верно?
ILYA
Немного подумав, и предположив, что загрузка какого либо файла (фавиконки, картинки, таблицы стилей, скрипта и т.д.) может попасть под запрет и этот запрет может генерировать 403-код на весь документ, немного дополнил последнюю строку.
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/(images|media|templates|uploads)/.*\.(css|js|ico|png|jpe?g|gif|swf)$
RewriteRule .* - [F,L]

Но это ничего не изменило :(
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.