mod_rewrite составление URL вида mydomain:.com/films/my_cool_film

sickboy

Новичок
mod_rewrite составление URL вида mydomain.com/films/my_cool_film

Имеется каталог фильмов, информация о каждом фильме запрашивается примерно так:

mydomain.com/?get_films=21

соответсвенно из БД выбирается вся информация о фильме с id = 21, в т.ч. и его название.
Можно ли это название впихнуть в URL, чтобы получилось http://mydomain:.com/films/my_cool_film, примерно так наверное сделано на http://www.ag.ru/games/hitman_blood_money
 

sickboy

Новичок
а как?
хотя бы примерно подскажите.

-~{}~ 28.06.06 20:15:

никаких идей?
 

Xover

Новичок
Тоже интересно.

Знаю как сделать чтобы преобразовать mydomain.com/?get_films=21 в mydomain.com/films/21,

Думаю надо сделать изменения в скрипте, чтобы ссылки были вида http://mydomain.com/films/my_cool_film, а благодаря mod_rewrite вызывать будем mydomain.com/?get_films=my_cool_film

Поправьте меня.
 

fixxxer

К.О.
Партнер клуба
ну ты сделай, а если уж не получится - тогда и спрашивай
 

cyberface

Новичок
Автор оригинала: sickboy
Имеется каталог фильмов, информация о каждом фильме запрашивается примерно так:

mydomain.com/?get_films=21

соответсвенно из БД выбирается вся информация о фильме с id = 21, в т.ч. и его название.
Можно ли это название впихнуть в URL, чтобы получилось http://mydomain:.com/films/my_cool_film, примерно так наверное сделано на http://www.ag.ru/games/hitman_blood_money
Ну для этого не достаточно одного мод_реврайта, нужно поменять сам движок, что бы он искал фильмы не по id а по названию. Если этого не сделать придется переписывать движок и .htaccess каждый раз, когда добавляется новый фильм =)
 

Gorynych

Посетитель PHP-Клуба
cyberface
Ну для этого не достаточно одного мод_реврайта, нужно поменять сам движок, что бы он искал фильмы не по id а по названию. Если этого не сделать придется переписывать движок и .htaccess каждый раз, когда добавляется новый фильм =)
- абсолютно НЕКОРРЕКТНЫЙ и НЕПРАВИЛЬНЫЙ ответ

P.S. одними правилами переопределения адресов конечно не обойтись, но фраза "придеться переписывать движок" - избыточна (достаточно будет функции соответствия между названиями и идентификаторами).

а концовка "... и .htaccess каждый раз" - в корне неверна. В этом же разделе буквально вчера разжевывалась история про создание и перенаправления на картинки с аналогичным rewrite-правилом
 

sickboy

Новичок
Gorynych
я правильно понял, что в формируемых ссылках действительно должны быть ?get_films=my_cool_film или функция приобразования должна работать реализована в самом mod_rewrite?
 

Gorynych

Посетитель PHP-Клуба
sickboy
нет, не правильно. Кажется - вообще не поняли.
 

sickboy

Новичок
Gorynych
а можете объяснить так, чтобы было понятно, даже для тех кто в танке?
 

Gorynych

Посетитель PHP-Клуба
sickboy
а с какого момента? Давайте так, для начала Вы идете и внимательно читаете статью "ЧПУ и PHP (revisited)" http://spectator.ru/technology/php/user_friendly_urls

а заодно, читаете приведенные там ссылки (но не раньше, чем они встретяться в контексте статьи!), в том числе вот эту - http://register.spectator.ru/09.04.2003/7

в идеале вот эти две ссылки содержат всю необходимую информацию. За одним "но" - они не научат Вас регулярным выражениям (предполагается, что Вы в них разбираетесь):

- http://httpd.apache.org/docs/mod/mod_rewrite.html
- http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

но, я так понимаю, что читать и понимать документацию на английском языке сейчас почему-то не модно :-(

в той же статье на "Спектаторе" есть еще две ссылки:

а) перевод mod_rewrite - http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html

б) mod_rewrite для чайников - http://sitemaker.ru/technologies/webserver/mod_rewrite/

понимаете, Вы приходите и говорите: "Я хочу сделать так чтобы..." Но по сути, вашей квалификации для этого недостаточно. Значит нужно ее (квалификацию) повысить.

так что давайте Вы постараетесь внимательно проработать текст и примеры из указанных ссылок (хотя бы те, которые на русском), а потом посмотрим, нужно ли дальнейшее объяснение.
 

sickboy

Новичок
Gorynych

Большое спасибо за ссылки.
Но почти все из них у меня уже есть в закладках и не раз прочитаны.

Автор оригинала: Xover
Тоже интересно.

Знаю как сделать чтобы преобразовать mydomain.com/?get_films=21 в mydomain.com/films/21,

Думаю надо сделать изменения в скрипте, чтобы ссылки были вида http://mydomain.com/films/my_cool_film, а благодаря mod_rewrite вызывать будем mydomain.com/?get_films=my_cool_film

Поправьте меня.
Мне не понятно, почему этот предложенный вариант не верный.
 

Gorynych

Посетитель PHP-Клуба
sickboy
я правильно понял, что в формируемых ссылках действительно
должны быть ?get_films=my_cool_film или функция приобразования
должна работать реализована в самом mod_rewrite?
мне казалось, что боролись за то чтобы ссылки были вида
Код:
mydomain.com/films/my_cool_film
, а не
Код:
mydomain.com/?get_films=my_cool_film
Большое спасибо за ссылки.
Но почти все из них у меня уже есть в закладках и не раз прочитаны.
возможно они прочитаны, но плохо поняты

Пример из классики жанра: обработка отсуствующего документа:

Код:
.htaccess
=======
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /badurl.php?badurl=$1 [QSA,L]

badurl.php
========
<?php

if ( isset($_GET['badurl']) ) {
    echo "<h4>Запрошенный Вами адрес "
        .$_GET['badurl']
        .( ($qsa=preg_replace("/badurl=[^(&|$)]+(&|$)/", "", $_SERVER['QUERY_STRING'])) ? "?$qsa" : '')
        ." не найден</h4>";
}
?>
для примера можете:

1) ввести тиеперь адрес типа http://mydomain.com/films/my_cool_film

2) посмотреть что напишет badurl.php

3) вынуть из закладок ссылку http://nudnik.ru/entry/1492 и постораться ее не просто прочитать, а понять как написанное там соотносится с вашей задачей
 
Сверху