Упростить мод-реврайт

Мутник

Новичок
Упростить мод-реврайт

есть нечто вроде:

PHP:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /test/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]*)$ index.php?area=$1
RewriteRule ^([a-zA-Z0-9_-]*)/([a-zA-Z0-9_-]*)$ index.php?area=$2
RewriteRule ^([a-zA-Z0-9_-]*)/([a-zA-Z0-9_-]*)/([a-zA-Z0-9_-]*)$ index.php?area=$3
и так можно до бесконечности, если меня интересует только то, что в конце.

как это можно упростить, чтобы.. правильнее было?

и еще: хотелось бы чтобы работало:

www.site.lv/test/name && www.site.lv/test/name/

т.е. был один и тот же результат...
 

Мутник

Новичок
спасибо! Как все просто...

-~{}~ 23.04.05 01:50:

еще в ту же степь вопрос:

а возможно ли сделать так, чтобы все, что в строке статусной после "?" передавалось как параметры в самый конец условия?
 

SiMM

Новичок
> передавалось как параметры в самый конец условия?
QSA?
 

Мутник

Новичок
SiMM

сейчас пороюсь, посмотрю, что за QSA :)

-~{}~ 24.04.05 00:01:

И еще сюда же вопросик:

можно ли каким то образом составить условие, типа если встречается нечто вида /ru/, /lv/, /en/, /lt/, /ge/ и так далее, то дописать еще в конец и &lang=$3
?

-~{}~ 26.04.05 21:23:

^

-~{}~ 28.04.05 02:44:

^
 

kruglov

Новичок
А почему б не посылать все запросы на скрипт, самостоятельно анализирующий REQUEST_URI?
 

Мутник

Новичок
kruglov

т.е. не пользоваться услугами mod_rewrite?

насколько я знаю, при этом варианте нельзя юзать $_POST на странице.
 

fixxxer

К.О.
Партнер клуба
POST нельзя юзать только при способе с ErrorDocument.
Впрочем, если этот способ оказывается единственно доступным (например, на IIS), ничего страшного - делай POST на "неЧПУ"-URL. Все равно после поста делать редирект.

Я, кстати, тоже кидаю все на единый обработчик и произвожу парсинг урла уже в нем - получается более гибко, в том смысле, что не надо править .htaccess, что удобно, если заранее урлы неизвестны (например, подключаются модули). Причем в Apache 1 можно вообще обойтись без mod_rewrite. .htaccess у меня такой:
PHP:
# Apache 1: use ForceType
<IfModule !core.c>
  Action throw /index.php
  <FilesMatch "^([^.]+)$">
    ForceType throw
  </FilesMatch>
</IfModule>

# Apache 2: use mod_rewrite
<IfModule core.c>
  RewriteEngine On
  RewriteRule   "^([^.]+)$" /index.php
</IfModule>
 

Мутник

Новичок
fixxxer

т.е. получается, что ты все разбираешь в index.php и не паришься особо...
ясно, спасибо за идею, это то же самое, что предложил круглов!?
 
Сверху