Страница 1 из 1

Помогите упростить .htaccess

СообщениеДобавлено: Пн апр 23, 2012 7:18 pm
Webkit
Добрый день!

Сделал .htaccess для своих нужд. Правило RewriteRule ^(([^/]*)(/([^/]*)(/.*)?)?)?$ index.php?page=$2&list=$4 выполняется при условии что REQUEST_FILENAME не является существующим файлом с расширением css|jpg|gif|png|zip|rar|doc|xls|js|tif|tiff|docx|xlsx|ico (если не существует то правило выполняется).

Файл .htaccess:

RewriteCond %{REQUEST_FILENAME} !\.(css|jpg|gif|png|zip|rar|doc|xls|js|tif|tiff|docx|xlsx|ico)$
RewriteRule ^(([^/]*)(/([^/]*)(/.*)?)?)?$ index.php?page=$2&list=$4 [L,QSA]
RewriteCond %{REQUEST_FILENAME} \.(css|jpg|gif|png|zip|rar|doc|xls|js|tif|tiff|docx|xlsx|ico)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([^/]*)(/([^/]*)(/.*)?)?)?$ index.php?page=$2&list=$4 [L,QSA]

Выглядит громоздко, учитывая повторение строк. Как можно упростить?

СообщениеДобавлено: Пн апр 23, 2012 8:56 pm
Alexx
Несколько сложная логика:
Вначале мы проверяем если не файлы с расширением..

Вторым условие если файлы с этим расширением ( - здесь бы я поставил [NC,OR]
или [NC,AND]) т.к. после этого условий нет правил то соответственно и не чего не выполняется.. по кране мере в мне так кажется по теории))

Третьим условием как я понимаю мы проверяем что если любого файла нет то выполняется все тоже первое условие.

В теория я бы сделал так:

RewriteCond %{REQUEST_FILENAME} !\.(css|jpg|gif|png|zip|rar|doc|xls|js|tif|tiff|docx|xlsx|ico)$ [NC,OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([^/]*)(/([^/]*)(/.*)?)?)?$ index.php?page=$2&list=$4 [L,QSA]

а вообще есть пословица если работает и не грузит сервер то и не лезь ))))))))))))))) :lol:

СообщениеДобавлено: Пн апр 23, 2012 9:44 pm
Webkit
Спасибо большое.

Мой конечный вариант:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !\.(css|jpg|gif|png|doc|ico)$ [NC]
RewriteRule ^(([^/]*)(/([^/]*)(/.*)?)?)?$ index.php?page=$2&list=$4 [QSA]