можно ли упростить.

physh

поедатель запятых
можно ли упростить.

Я в mod_rewrite не бум-бум. Но благодаря ресурсам в Вашем ФАКе мне удалось кое что состряпать. Вопрос - правильно ли это и можно ли как-то все упростить, чтобы не пришлось скажем три раза одни и те же условия писать.

путь состоит из /раздел/страница/доп_инфо/, но если нет № страницы, то чтобы открывалась главная страница раздела.

Код:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^\/control\/(.*)$
RewriteRule ^([A-Za-z0-9_-]+)/([0-9]+)/([A-Za-z0-9_-]+)/?$ index.php?pg=$1.$2.$3 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^\/control\/(.*)$
RewriteRule ^([A-Za-z0-9_-]+)/([0-9]+)/?$ index.php?pg=$1.$2 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^\/control\/(.*)$
RewriteRule ^([A-Za-z0-9_-]+)/?$ index.php?pg=$1 [L]
Зараннее спасибо.
 

WP

^_^
У меня:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/favicon.ico$
RewriteCond %{REQUEST_FILENAME} !/install.php$
RewriteCond %{REQUEST_FILENAME} !/js/
RewriteCond %{REQUEST_FILENAME} !/images/
RewriteCond %{REQUEST_FILENAME} !/files/
RewriteRule .* main.php

А потом парсю REQUEST_URI уже в PHP.
 

Igor aka TiGR

Новичок
RewriteCond %{REQUEST_FILENAME} !/favicon.ico$
RewriteCond %{REQUEST_FILENAME} !/install.php$
RewriteCond %{REQUEST_FILENAME} !/js/
RewriteCond %{REQUEST_FILENAME} !/images/
RewriteCond %{REQUEST_FILENAME} !/files/
Можно упростить до:

RewriteRule ^(favicon.ico|install.php|/js/|/images/|/files/).*$ - [L]

Только это правило нужно поставить ДО RewriteRule .* main.php
 

WP

^_^
Igor aka TiGR
Упрощение подразумевает равнозначность, которой тут невидать :)
 

Igor aka TiGR

Новичок
Я просто подал идею. И этим способом вполне реально упростить. Под любые потребности.

-~{}~ 27.08.06 23:02:

хотя, конечно, если используются и другие правила - нужно это немного учитывать. А если весь .htaccess был приведён выше - то вполне будет работать.
 

physh

поедатель запятых
спасибо за идеи, но меня интересовло можно ли упростить так, чтобы 3 раза не повторять правила RewriteCond (для каждого из RewriteRule). Пускать все через один файл это тоже конечно хорошо, но сожалению в данном случае не подходит.
 

Igor aka TiGR

Новичок
Можно запихнуть всё в один rewriteRule. Только слегка поменяется формат pg. Для разделов более высокого уровня будет "$1.." и "$1.$2.".
 

ksnk

прохожий
А так?
Код:
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !^\/control\/(.*)$
    RewriteRule ([A-Za-z0-9_-]+)(/?$|/([0-9]+)/(/?$|([A-Za-z0-9_-]+)/?$)) index.php?pg=$1.$3.$5 [L]
Отчего-то у меня не пошли "незахватывающие" скобки? Это фича mod_rewrite или кривизна моих рук?
 
Сверху