mod rewrite

saddy_man

Новичок
mod rewrite

На сайте куча ссылок в виде:
http://localhost/index.php?r=gallery
http://localhost/index.php?r=gallery&show=1

В вид http://localhost/gallery переделываю без проблем с помощью:
RewriteRule ^(.*)$ index.php?r=$1 [L,QSA]

Но ссылку http://localhost/index.php?r=gallery&show=1 незнаю как переделать в вид http://localhost/gallery/show/1

Помогите плиз с сотавлинием правила.
 

Фанат

oncle terrible
Команда форума
В вид http://localhost/gallery переделываю без проблем с помощью:
RewriteRule
не надо ля-ля
переделываешь ты из вида в вид руками.

вот и http://localhost/gallery/show/1 тоже пиши руками.
а правило оставь то же самое
 

saddy_man

Новичок
STALK3R
не совсем то, что надо. Дело в том, что страниц много, и параметров соотвественно много, и они разные.
К примеру из url
http://localhost/index.php?r=gallery&show=1
видно, что модуль - галлерея. Модуль news будет иметь свои параметры
http://localhost/index.php?r=news&all&page=1
Хочется понять как можно написать правило работающее для разных модулей, или как выход написать несколько правил, но чтобы они друг с другом не конфликтовали...

p.s. вообще можно ли как-нибудь одним правилом заменить все "&" на "/" ?
 

saddy_man

Новичок
Фанат
желание заказчика, хочет чтобы все выглядело красиво, т.е. через "/".
 

Фанат

oncle terrible
Команда форума
воооот.
мы и добрались, наконец, до момента истины.
выяснили (правда, это было ясно с самого начала), что кое-кто не понимает, как работает и для чего нужен мод-реврайт.

итак. барабанная дробь. глаза отверзаются, истина появляется!
модреврайт не занимается заменой ? на /.
он делает РОВНО НАОБОРОТ. (см. мой самый первый ответ, который ты благополучно проигнорировал)
заменять вопросики и равно на палочки тебе придётся самостоятельно. руч-ка-ми!
а мод-реврайт тебе поможет наоборот - из палочек получить вопросики.
как только ты постигнешь эту важную информацию, ты будешь готов воспринять следующую порцию истины.
 

saddy_man

Новичок
Фанат
ручками в url'ах я заменил все ? и & на /. Т.е. все url выглядят сейчас как http://localhost/gallery/show/1.
Теперь, на сколько я понимаю, надо написать правило в мод реврайт, чтобы он эти / воспринимал как &. Но как написать рабочее правило недогоняю, перечитал кучу инфы, все не хочет работать...
 

Фанат

oncle terrible
Команда форума
опять возвращаемся к моему первому посту, который ты проигнорировал.
что там написано?
пра-ви-ло ос-тав-ля-ем то же са-мо-е!
и в скрипте получаем /gallery/show/1
а дальгше совсем просто.
функция explode тебе знакома?
 

saddy_man

Новичок
да, конечно знакома.

Но тогда я не смогу использовать к примеру какой-либо параметр типа $_GET['show'] ?
 

Фанат

oncle terrible
Команда форума
почему не сможешь?

-~{}~ 27.08.06 01:21:

и мод реврайт
и твой скрипт
получают ОДИНАКОВУЮ строку.
/gallery/show/1

скажи, что тебе проще - получить из неё $_GET['show'] с помощью пхп или с помощью правил реврайта?
 

saddy_man

Новичок
Если делать explode http://localhost/gallery/show/1 такого url, то GET['show'] не будет доступен, т.к. будет один большой GET == gallery/show/1.
А у меня много страниц, где параметр выдирается просто как GET['show'], к примеру.
 

Фанат

oncle terrible
Команда форума
ох, как же с вами тяжело-то.
с которыми, кто сами не знают, чего хотят.
ну так и сделай РУКАМИ из /show/1 - GET['show']
 

saddy_man

Новичок
Фанат
Спасибо, теперь понял, что к чему. Просто думал можно без explode сделать все, одним только mod rewrite.
 

Фанат

oncle terrible
Команда форума
можно.
если хочешь - пиши правила mod rewrite
флаг тебе в руки.
 

Igor aka TiGR

Новичок
Можно, в принципе и через реврайт. Если грамотно к этому подойти - хватит пары правил.

Но прописывать все возможные варианты через реврайт - бред. Приходилось видеть файлы .htaccess в 20 килобайт.

Можно например обойтись одним правилом:

RewriteRule ^(.*)/([a-z]+)/([0-9]+)$ index.php?r=$1&do=$2&show=$3 [L,QSA]
 

Фанат

oncle terrible
Команда форума
Igor aka TiGR
твой совет хорош для случая, когда сайт делается с нуля.
а он переделывает готовый
структура которого не планировалась под ЧПУ.
и параметры там идут - как бог на душу положит.
 
Сверху