Так, значит пытаюсь разобраться, очень прошу прокомментировать правильность моего разбора и ответить на вопрос :)
# тут ясно, преобразуем host/admin/value => host/admin/index.php?page=value
RewriteRule ^admin/(.*)$ admin/index.php?route=$1 [L,QSA]
# далее, так понимаю, условия для преобразований host/value => host/index.php?page=value
# производить преобразования, если запрошенный урл не начинается с /admin
RewriteCond %{REQUEST_URI} !^/admin
# производить преобразования, если запрошенный урл не начинается с /favicon.ico
# кстати, а как насчет admin/favicon.ico или Опера запрашивает фавиконку только от корня сайта?
RewriteCond %{REQUEST_URI} !^/favicon.ico
# разрешаем преобразование, только если по пути нет файла/папки
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# host/value => host/index.php?page=value
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
И вот он вопрос:
Почему перед преобразованиями для админки нет этих условий:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Там тоже ведь могут попадаться какие-нить файлы, например с javascritом, вдруг админка у нас xmlhttprequest вовсю юзает?
ЗЫ: А еще мне думается, что правило лучше сделать так:
RewriteRule ^([^\.]*)$ index.php?route=$1
, а то у нас получается запрос на config.php выдаст 404, а запрос на какой-нибудь no_such_file.php выдаст главную страницу, и станет ясно, что файл config.php все-таки существует. Или я не прав?
Спасибо.