ЧПУ - директива на несколько файлов

Статус
В этой теме нельзя размещать новые ответы.

askarbin

Профессор
Регистрация
31 Мар 2009
Сообщения
292
Реакции
36
Прошу помощи в вопросе, в котором сам я абсолютный новичек.
В общем решил сделать на сайте ЧПУ, прописал несколько директив через mod_rewrite и наткнулся на одну проблему.
У меня есть необходимость создать что-то подобное:

RewriteRule ^objects/([A-z0-9-]+)(/?)+$ objects/index.php?mode=region&region=$1 [L]
RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)(/?)+$ objects/index.php?mode=city&region=$1&city=$2 [L]
RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)(/?)+$ objects/view.php?mode=outside&region=$1&city=$2&type=$3 [L]

И плюс к этому далее мне хотелось бы преобразовывать ссылку вида
^objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)(/?)+$ к userpart/index.php?altname=$1

Пожалуйста, подскажите, как лучше всего решить такую проблему, желательно без изменения функционала файлов. Всем откликнувшимся спасибо.
 
как-то непонятно, на какую проблему ты наткнулся ? напиши четко, что-ты сделал, что у тебя не работает из сделанного, чего бы ты хотел еще сделать.
 
Сделал вот это:

RewriteRule ^objects/([A-z0-9-]+)(/?)+$ objects/index.php?mode=region&region=$1 [L]
RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)(/?)+$ objects/index.php?mode=city&region=$1&city=$2 [L]

Работает!
Дальше хочу сделать ссылку вида /objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/ и чтобы вела она не на файл objects/index.php как в предыдущих директивах, а на файл objects/view.php с параметрами mode=outside&region=$1&city=$2&type=$3.

Сделал так:

RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)(/?)+$ objects/view.php?mode=outside&region=$1&city=$2&type=$3 [L]

Не работает, не знаю почему, я не силен в mod_rewrite, поэтому предположил, что не работает из-за того, что ссылки ведут на разные файлы.
Да и дальше бы хотел преобразовывать ссылку вида
/objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/
к userpart/index.php?altname=$1 причем, чтобы altname бралась из последней переменной.

Пример:
- /objects/region/ -> objects/index.php?mode=region&region=$1 [работает]
- /objects/region/city/ -> objects/index.php?mode=city&region=$1&city=$2 [работает]
- /objects/region/city/type/ -> objects/view.php?mode=outside&region=$1&city=$2&type=$3 [не работает]
- /objects/region/city/type/name/ -> userpart/index.php?altname=$1 [не работает, причем тут, нужно сделать так, чтобы $1 соответствовала /name/]

Вот подробнее расписал то что мне нужно, подскажите, возможно ли это реализовать? И если да то, как? А если так не пойдет, может другие способы?
 
Да и дальше бы хотел преобразовывать ссылку вида
/objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/
к userpart/index.php?altname=$1 причем, чтобы altname бралась из последней переменной.
Если недо чтобы бралось из последней переменной, то и указывать надо последнюю переменную, то есть не $1 а $4? т.е. userpart/index.php?altname=$4
 
RewriteEngine On
RewriteRule ^objects/([A-z0-9-]+)/?$ objects/index.php?mode=region&region=$1 [L]
RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)/?$ objects/index.php?mode=city&region=$1&city=$2 [L]

RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/?$ objects/view.php?mode=outside&region=$1&city=$2&type=$3 [L]
RewriteRule ^objects/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/([A-z0-9-]+)/?$ userpart/index.php?altname=$4 [L]

потестил на примерах:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

всё работает
 
Да, на самом деле все работает, на сервере какие-то неполадки возникли, видимо, теперь тестирую - все ок. Спасибо, всем кто откликнулся.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху