ModRewrite и GET запросы

crezd

Новичок
ModRewrite и GET запросы

Добрый вечер,

Назрела такая проблема, когда нужно что бы каждое УРЛ на сайте перекодировалась при помощи ModRewrite в другой вид.

например:

site.com/?a=1&b=2&c=3&d=4

превращалось в:

site.com/a/1/b/1/c/3/d/4

так вот люди дорогие, как это сделать?

-~{}~ 28.01.09 18:16:

Забыл сказать что сейчас прописан такой рул:

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

так вот надо чтобы все что было в урл заходило в новом виде в переменную route

Заранее спасибо!
 

dimagolov

Новичок
crezd, ну разобрать ссылки вида site.com/a/1/b/1/c/3/d/4 через RewriteRule не большая проблема. Но их же кто-то должен в таком виде генерировать. Как ты себе это видишь? Кто это будет делать?
 

crezd

Новичок
так я их не разбирать хочу, а собирать

чтобы когда есть

?a=1&b=2&c=3&d=4

то он делает редирект на

/a/1/b/1/c/3/d/4
 

Beavis

Banned
crezd
а что потом делать с строкой /a/1/b/1/c/3/d/4 ?
опять разбирать? О_о
 

dimagolov

Новичок
:(
еще один, который не понимает, что mod_rewrite не генерит ЧП ссылки, а ЧП запросы делает понятными для движка сайта.
 

Beavis

Banned
не, ну впринципе то mod_rewrite может это сделать, только не понятно зачем это нужно..
 

dimagolov

Новичок
Beavis, что сделать? заменить ссылки в HTML-е на ЧПУ-шные?
не ляпай что попало, а то чувак подумает, что тут его все обманывают, а на самом деле все можно сделать, вот ты же сказал, что "впринципе то mod_rewrite может это сделать"
 

StUV

Rotaredom
dimagolov
в итоге он кажется хотел это:
так вот надо чтобы все что было в урл заходило в новом виде в переменную route
это можно сделать
но все-равно остается вопрос "зачем?" ;)

-~{}~ 28.01.09 22:32:

зы:
возможно эта проблема из разряда "легкий способ" перехода на другой цмф
 

Beavis

Banned
Автор оригинала: dimagolov
Beavis, что сделать? заменить ссылки в HTML-е на ЧПУ-шные?
Причем тут заменить ссылки в HTML-e?
Спрашивали про редирект с ?a=1&b=2&c=3&d=4 на /a/1/b/1/c/3/d/4
 

Beavis

Banned
Автор оригинала: *****
Beavis
тут принято головой думать, читая вопрос.
Я спросил зачем это автору понадобилось. Какие ко мне вопросы? Если моё сообщение кто-то в попыхах не так понял, причем тут я)
 

crezd

Новичок
Всем спасибо за бурное обсуждение того что на самом деле я хочу узнать :)

в нашей системе ссылки уже ЧПУшные, и выглядят они так:

site.com/news/5/read/15

news - имя запускаемого модуля
5 - глубина меню
read - операция модуля(публикация новости)
15 - Id новости


есть ситуации когда на сайте есть GET форма

<form action="GET" action="index.php">
<input type="hidden" name="news" value="5"
<input type="hidden" name="read" value="15"
<input type="submit">
</form>

при запуске формы я перехожу на обычную ссылку, а не ЧПУ

так вот я подумал что самый простой способ переcобрать это в modRewrite
и повесить на редирект

прав ли я и как это можно реализовать?
 

Beavis

Banned
crezd
Просто такие элементарные вещи не стоит делать формами. Тут обычной ссылки бы хватило.
 

zerkms

TDD infected
Команда форума
x-yuri
в том то и дело, что они абсолютно одинаковые.
что один ужасен с точки зрения ЧПУшности, что другой. зачем тогда делать какие-то телодвижения вообще?
 

x-yuri

Новичок
блин, zerkms, ты придираешься. Человек не приводил реальные URL. Точнее приводил такой:
site.com/news/5/read/15
может это и не верх ЧПУшности, но это уже реальный URL, используемый на сайте

-~{}~ 29.01.09 02:01:

вот по поводу этого URL ему стоит предложить, например,
site.com/news/lorem-ipsum.html
 

zerkms

TDD infected
Команда форума
x-yuri
как раз он привёл желаемое поведение для урла, которое звучит как:
убираем & и =, вместо них пишем слеши.
в сухом остатке получается, что урл более читабельным не стал

но это уже реальный URL
http://phpclub.ru/talk/showthread.php?s=&threadid=112641

это тоже реальный урл, с кверистрингом

по модели тредстартера он должен быть трансформирован в:
http://phpclub.ru/talk/showthread/threadid/112641
по здравому смыслу:
http://phpclub.ru/talk/thread/112641
 

x-yuri

Новичок
да, понял о чем ты)
Эй, crezd, идею понял??! заснул что ли *DONT_KNOW*

-~{}~ 29.01.09 04:22:

хотя минутку, crezd, у тебя ЧПУ уже реализовано? т.е. index.php по парамтру route определяет, что надо сделать?

если ты просто хочешь, чтобы твой роутер воспринимал не только ЧПУ, но стандартные URL'ы (например, для каких-нибудь старых ссылок на сайт), просто усовершенствуй свой роутер

-~{}~ 29.01.09 04:25:

точнее так, zerkms прав, у тебя не тру-ЧПУ. Его лучше переделать

-~{}~ 29.01.09 04:31:

но в любом случае, преобразовывать
site.com/?a=1&b=2&c=3&d=4
в
site.com/a/1/b/1/c/3/d/4
с помощью mod_rewrite менее надежно, чем в самом скрипте. Потому что ты должен расчитывать на максимальное количество параметров. Т.е. для каждого количества параметров свой RewriteRule написать. Других вариантов я, по-крайней мере, не придумал
 
Сверху