Apache Правильный роутер

tonchikp

Новичок
PHP:
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php
1) Как правильно перенаправить все запросы на роутер, но тем не менее исключить перенаправление для стилей, js-скриптов, картинок, музыки, видео и прочего

2) Пробовал в регулярках поставить ^ и (css|js), не помогло, возможно я чего-то не понимаю

3) Почему на разных сайтах встречаются разные ключи, то [L], то [NC], в связи с этим ещё вопрос, написал правила для того чтобы защитить картинки от вставки на другие сайты, указал ключ [L], следующими строками идёт код который написал выше, будет ли он действовать после этого ключа, не очень понимаю как этот ключ работает (документацию читал, на разных сайтах искал ответ, но не понял дальше того что написано)

4) Опять же на некоторых сайтах рекомендуют схему index.php?param1=value1&param2=value2, как я понимаю получается GET-запрос, хотелось бы узнать мнения по этому поводу, удобно ли потом его разбирать, стоит ли этим направлением идти, как-то некрасиво выглядит и вроде если понадобится query_string, а знак вопроса уже занят, или они могут вместе быть?

5) Сходу ситуация, например нужно показать отчёт, на основе query_string скрипт получает год и выводит отчёт за этот год. Или есть более правильный способ?
 

WoLFiks

Не курю...
PHP:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php
При вышеприведенной схеме легко узнать какая CMS или фреймворк используется при разработке сайта, если это не критично, то абсолютно нормальная схема.

Встречал вариант, когда сделано вообще просто
PHP:
RewriteEngine on
RewriteRule .* index.php
А во вложенных директориях, например с картинками и JS, которые лежат ниже doc_root:
PHP:
RewriteEngine off
Можно использовать вообще одну строчку:
PHP:
RewriteEngine On
RewriteRule !\.(gif|css|jpe?g|js и т.д.)$ index.php [L,NC]
 
Сверху