| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Администрирование Web серверов и Web служб > Большие проблемы с mod rewrite |
| Автор: Reet 27.7.2009, 13:25 |
| подскажите пожалуйста как правильно прописать в .htaccess чтоб сервер поменял мне этот адрес http://localhost/filmz/rec_full.php?id=10 на http://localhost/filmz/rec_full/10 а то что ни как не могу сообразить!!! |
| Автор: Reet 27.7.2009, 19:17 |
| Админы помогите уже незнаю что делать у меня локальный апатч Денвер 3 версия функция mod_rewrite включен в файл .htaccess логику пишу но сайт на этот файл нереагирует пишу так: RewriteEngine on Options +FollowSymlinks RewriteRule ^/id/([a-zA-Z]+)$ /rec_full.php?id=$1 |
| Автор: Nigel 29.7.2009, 10:15 | ||
|
| Автор: Reet 29.7.2009, 11:41 |
| Nigel сделал как ты на писал но не чего не происходит в rewrite.log пишет следующие а что это я не могу понять: 127.0.0.1 - - [29/Jul/2009:15:04:25 +0600] [localhost/sid#913520][rid#c1d5450/initial] (3) [perdir Z:/home/localhost/www/filmz/] strip per-dir prefix: Z:/home/localhost/www/filmz/rec_full.php -> rec_full.php 127.0.0.1 - - [29/Jul/2009:15:04:25 +0600] [localhost/sid#913520][rid#c1d5450/initial] (3) [perdir Z:/home/localhost/www/filmz/] applying pattern '^filmz/rec_full/(\d+)' to uri 'rec_full.php' 127.0.0.1 - - [29/Jul/2009:15:04:25 +0600] [localhost/sid#913520][rid#c1d5450/initial] (1) [perdir Z:/home/localhost/www/filmz/] pass through Z:/home/localhost/www/filmz/rec_full.php 127.0.0.1 - - [29/Jul/2009:15:04:25 +0600] [localhost/sid#913520][rid#c1db460/initial] (3) [perdir Z:/home/localhost/www/filmz/] strip per-dir prefix: Z:/home/localhost/www/filmz/css/style.css -> css/style.css 127.0.0.1 - - [29/Jul/2009:15:04:25 +0600] [localhost/sid#913520][rid#c1db460/initial] (3) [perdir Z:/home/localhost/www/filmz/] applying pattern '^filmz/rec_full/(\d+)' to uri 'css/style.css' 127.0.0.1 - - [29/Jul/2009:15:04:25 +0600] [localhost/sid#913520][rid#c1db460/initial] (1) [perdir Z:/home/localhost/www/filmz/] pass through Z:/home/localhost/www/filmz/css/style.css И Т.Д. |
| Автор: Nigel 29.7.2009, 15:43 | ||
| А чего ты собственно ожидаешь? Создай в корне файл filmz/rec_full.php Напиши в нем
И открой http://localhost/filmz/rec_full/10 |
| Автор: Reet 29.7.2009, 16:41 |
| у меня папка filmz - корневая в ней есть файл rec.php через него я попадаю на страницу http://localhost/filmz/rec_full.php?id=10 т.е файл rec_full.php у меня и так уже есть в корневой папке, я в нем в сам вверху дописал то что ты просил <?print_r($_GET);/> теперь при переходе с rec.php на rec_full.php?id=10 в самом вверху страницы над шапкой пишиться Array ( [id] => 10 ) но адрес так и не меняется в http://localhost/filmz/rec_full/10 |
| Автор: Nigel 30.7.2009, 10:14 | ||||||
выведет разве Z:/home/localhost/www/filmz/ ?
С rec.php поставь ссылку не на rec_full.php, а на http://localhost/filmz/rec_full/10. Ведь при вводе http://localhost/filmz/rec_full/10 у тебя обрабаывается твой файл rec_full.php. ЕЩЕ РАЗ БОЛЬШИМИ БУКВАМИ, ВВОДИТЬ НАДО http://localhost/filmz/rec_full/10. |
| Автор: Reet 30.7.2009, 12:26 |
| Nigel извини что достаю но мне не понятно вот смотри у меня есть файл rec.php вот в его коде есть ссылка такая: код файла rec.php -/-/-/-/-/-/-/-/-/-/-/-// printf ("бла бла бла..... <a href='rec_full.php?id=%s'>%s</a>",$myrow["id"],$myrow["title"]); } while ($myrow = mysql_fetch_array($result)); т.е. тут мне циклом из базы выводится список заметок у каждой свой id -/-/-/-/-/-/-/-/-/-/-/-/-/- при нажатии на ссылку <a href='rec_full.php?id=%s'>%s</a> я попадаю на файл допустим rec_full.php?id=10 или rec_full.php?id=11 смотря какой из id берется из базы ПРАВЕЛЬНО? так вот как правильно написать ссылку в файле rec.php вот эту ссылку <a href='rec_full.php?id=%s'>%s</a> что бы на следующей странице она преобразовывалась в rec_full.php/10 и что указать в .htaccess |
| Автор: Nigel 1.8.2009, 12:24 |
| код файла rec.php -/-/-/-/-/-/-/-/-/-/-/-// printf ("бла бла бла..... <a href='/filmz/rec_full/%d'>%s</a>",$myrow["id"],$myrow["title"]); } |
| Автор: Reet 1.8.2009, 18:22 |
| Nigel не пойму тебе что полный код файла нужен что ли? или как? |
| Автор: Nigel 3.8.2009, 20:37 |
| Нет, код файла мне не нужен. Я написал как будет выглядеть ссылка в твоем скрипте. Может, я чего недопонимаю, тогда еще раз более подробно объясни, что в итоге хочешь получить. По какой ссылке должен ходить пользователь, какой файл ты хочешь сделать обработчиком этой ссылки, укажи в каком каталоге находится этот файл и чему равен DOCUMENT_ROOT. |
| Автор: Reet 3.8.2009, 22:38 |
| так давай попорядку: 1. DOCUMENT_ROOT показывает Z:/home/localhost/www 2. у меня сайт лежит в папке z:\WebServers\home\localhost\www\filmz\ т.е. папка filmz корневая в ней лежат файлы rec.php и rec_full.php т.е. первоначально пользователь находится на странице rec.php в ней есть ссылка <a href='rec_full.php?id=%s'>%s</a>",$myrow["id"],$myrow["title"]); при нажатии на которую юзер перелетает на страницу rec_full.php?id=10 (ну здесь id может быть любой смотря какой берется из базы). т.е. в адресной строке пишется адрес http://localhost/filmz/rec_full.php?id=10 а мне надо что бы писалось http://localhost/filmz/rec_full/10. я делал как ты говорил ставил ссылку такую <a href='/filmz/rec_full/%d'>%s</a>",$myrow["id"],$myrow["title"]); при нажатии на нее я перелетаю на страницу http://localhost/filmz/rec_full/10 (т.е. в адресной строке пишется ТО ЧТО НАДО) но при этом сервер не видет страницу http://localhost/filmz/rec_full/10. сервер мне выводит следующие: Not Found The requested URL /filmz/rec_full/10 was not found on this server. предполагаю что не правильно указаны правила в файле .htaccess хотя пишу там как ты говорил выше: RewriteEngine on RewriteBase / RewriteRule ^filmz/rec_full/(\d+) filmz/rec_full.php?id=$1 |
| Автор: Nigel 4.8.2009, 10:39 | ||||
| Да, ты все сделал правильно. Вот только смутило
DOCUMENT_ROOT как раз и является корнем твоего сайта, т.е. все пути твоего сайта идут относительно корня. Поэтому твой сайт не может находиться в другой папке, в частности z:/webservers, кроме случая организации папок символичискими ссылками. Вероятно, ты что-то перепутал. Теперь почему 404 ошибка. Файл .htaccess должен располагаться в корне сайта т.е. здесь Z:/home/localhost/www. Ведь папка filmz у тебя находится тоже здесь, верно? Если ты размещаешь .htaccess в папке filmz, там же где и твой файл rec_full.php, то правило уже будет другим
|
| Автор: Reet 4.8.2009, 12:30 |
| спасиб получилось теперь он показывает мне строку как нада: http://localhost/filmz/rec_full/10 но перестал подгружать стили картинки и фоны показывает только текст! не уже ли для каждого теперь отдельно правило писать |
| Автор: Nigel 5.8.2009, 09:28 |
| Для правильного отображения картинок, стилей, видео используйте абсолютные пути либо поместите тэг base в разделе head документа до появления каких-либо ссылок на стили. |
| Автор: Reet 5.8.2009, 10:55 |
| огромное Спасибо все получилось после добавления тэга base. можно последний вопрос? подскажи как при переходе на страницу http://localhost/filmz/rec.php в адресной строке писалось http://localhost/filmz/rec.html |
| Автор: Nigel 6.8.2009, 11:03 | ||||
Да также почти
Ну или если в папке filmz находится .htaccess, то
|
| Автор: Reet 6.8.2009, 16:03 |
| все спасибо все вопросы исчерпаны |