Сообщение от Skipp
|
Остался самый главный вопрос, как вам подобное решение, говнокод или нет и что посоветуете изменить?
|
а ты объясни, почему именно так надо сделать? Почему css.php перенаправляется в index.php, а *.css в css.php?
а вообще, так можно еще сделать (помимо копирования переменных в подзапрос с префиксом REDIRECT_ появляется переменная REDIRECT_STATUS):
RewriteRule ^css/\w+\.css$ css.php
RewriteCond \$0 !=css.php [OR]
RewriteCond %{REQUEST_URI} =/css.php
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule .* index.php
кроме того, непонятно, зачем NC.
Непонятно, зачем нужен NE, он предотвращает экранирование специальных символов (?, &, #) в замещающей строке (до подстановки переменных), причем я не придумал других вариантов использования кроме как для #:
RewriteRule ^f success#f [R,NE] # без NE будет так: success%23f
Непонятно, зачем QSA. Он нужна, когда в замещающей строке указаны параметры и надо к ним добавить параметры из запроса:
RewriteRule .* index.php?rewrite [QSA] # index.php?rewrite&a=1&b=2...
по умолчанию, если в замещающей строке присутствуют параметры, параметры запроса не добавляются. Если же параметры отсутствуют в замещающей строке - используются параметры запроса. Т.е. указывая параметры в замещающей строке, мы переопределяем параметры запроса, если не добавлять QSA
добавление L на автомате -
дурная привычка
зачем нужны эти внутренние перенаправления, насколько я понимаю... Во-первых они происходят только для правил в .htaccess, когда они изменяют URL. Во-вторых, правила в httpd.conf и в .htaccess выполняются на разных этапах обработки запроса. Первые - при преобразовании url в имя файла, потом на основе этого имени файла выполняются директивы в соответствующих .htaccess-файлах. Поэтому, если мы изменили имя файла, надо выполнить для него директивы из соответствующих ему .htaccess-файлов, для этого делается подзапрос.