Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Дружественный формат URL
 
 автор: larush   (16.07.2008 в 17:45)   письмо автору
 
 

привет всем !
Хостеры попросили обеспечить "дружественный формат урлов" - без ? и &. Как бы сделать, не ломая струтуру сайта и движка ?

пример
http://www.larush-net.tut.su/index.php?alb=ls1&b=foto&page=1&s=16&pic=2, как я понял, должен замениться на что-то подобное
http://www.larush-net.tut.su/galery/pic2.html

Спасибо !

   
 
 автор: GeorgeIV   (16.07.2008 в 17:48)   письмо автору
 
   для: larush   (16.07.2008 в 17:45)
 

Замени в коде запросы GET на запросы POST

   
 
 автор: larush   (16.07.2008 в 17:56)   письмо автору
 
   для: GeorgeIV   (16.07.2008 в 17:48)
 

так все реализовано на ссылках... < a href>... как сделать- не понимаю

   
 
 автор: GeorgeIV   (16.07.2008 в 18:05)   письмо автору
 
   для: larush   (16.07.2008 в 17:56)
 

http://www.larush-net.tut.su/index.php?alb=ls1&b=foto&page=1&s=16&pic=2, 

заменяем на
http://www.larush-net.tut.su/alb_ls_b_foto_page_1_s_16_pic_2.html
а в .htaccess делает mod_rewrite

RewriteEngine    on
# Указать корневую папку сайта
RewriteBase    /
RewriteRule    ^(.+)$    index.php    [E=QUERY_STRING:$1,L]


т.е. адрес превращается в параметр, и дальше его парсить и формировать реальный урл

   
 
 автор: larush   (16.07.2008 в 18:20)   письмо автору
 
   для: GeorgeIV   (16.07.2008 в 18:05)
 

что-то с пылу-жару не получилось..
1 как функции в htaccess узнают где знаки арвно а где ?&
2 можно-ли как-то обработать это дело в PHP скрипте
3 пожалуйста попобробнее - корневую указывать от localhost или с путем от диска ?
4 при установке данного файла- вознеикает ошибка про синтаксис htaccess и ошибку 500
вот сам текст


RewriteEngine    on
RewriteBase    z://home/localhost/www/larush/
RewriteRule    ^(.+)$    index.php    [E=QUERY_STRING:$1,L]


Спасибо

   
 
 автор: GeorgeIV   (16.07.2008 в 18:29)   письмо автору
 
   для: larush   (16.07.2008 в 18:20)
 

Смысл этого действа в том, что какая бы строка не была в урле, она всегда как параметр передается в index.php, а он уже разбирает на пары параметров.
Соответственно все ссылки в коде должны формироваться в таком виде:
вместо nechto?a=b&c=5 должно быть nechto__a_b_c_5.html
RewriteBase - это имя сервера его лучше оставить /

   
 
 автор: larush   (16.07.2008 в 18:44)   письмо автору
 
   для: GeorgeIV   (16.07.2008 в 18:29)
 

http://localhost/larush/index.php__b_foto_page_1_s_16_pic_2.html

вот что отразилось в адресной строке... хотелось бы
http://localhost/larush/index.php?b=foto&page=1&s=16&pic=2.html

   
 
 автор: GeorgeIV   (16.07.2008 в 18:50)   письмо автору
 
   для: larush   (16.07.2008 в 18:44)
 

я так понял, тебя попросили убратьпараметры из адресной строки, я предложил вариант.

   
 
 автор: larush   (16.07.2008 в 20:07)   письмо автору
 
   для: GeorgeIV   (16.07.2008 в 18:50)
 

да, но вот и пыnаюсь это сделать ..

допер до чего - при включенном htaccess загружается index.php, я получаю строку и разбираю, здесь уже что-то. Но при этом, перестали отражаться рисунки, хотя src в случае с включенным и отключенным одинаков. Такое ощущение, что "смещается точка отсчета"... Если фотка лежит в корне сервера- то открывается, если же в директории- то нет, хотя ссылками игрался долго...
Что делать ?

   
 
 автор: GeorgeIV   (17.07.2008 в 09:54)   письмо автору
 
   для: larush   (16.07.2008 в 20:07)
 

RewriteRule  ^img/(.+)$  img/$1    [E=REDIRECT_DONE:true]


RewriteCond     %{ENV:REDIRECT_DONE}    !^true$
RewriteCond     %{ENV:REDIRECT_SITE_REQUEST_DOCUMENT}    ^$

Добавть эти строчки в .htaccess, первую после RewriteBase /
вторую перед
RewriteRule    ^(.+)$    index.php    [E=QUERY_STRING:$1,L] 

При этом предполагается, что картинки в папке img.
смысо этого в том, что картинки не будут преобразовываться и будут отдаваться как есть, так же можно добавить еще условия, для которых не требуется преобразование

   
 
 автор: larush   (18.07.2008 в 10:24)   письмо автору
 
   для: GeorgeIV   (17.07.2008 в 09:54)
 

не кактит.... вот htaccess

RewriteEngine on
RewriteBase /larush/
RewriteRule ^img/(.+)$ larush/$1 [E=REDIRECT_DONE:true]
RewriteCond %{ENV:REDIRECT_DONE} !^true$
RewriteCond %{ENV:REDIRECT_SITE_REQUEST_DOCUMENT} ^$
RewriteRule ^(.+)$ index.php [E=QUERY_STRING:$1,L]


"автоматом" из преобразованной строки не смог вытянуть параметры, пришлось кодировать "под себя" я заменяю = через Z, а & через N, получаю то что надо и разбираю. вот пример
http://localhost/larush/__bZfotoNsZ16NalbZls1.html


ссылки работают, все красиво, только изображения так и не появилсь. У меня след. структура:

DocumentRoott
-- larush
     - dir1
       -dir11
        -files
          -small
            -galery1
         -big
            -galery1

в galery1 лежат превтюшки и большого размера изображения
Пробовал класть тестовое изображение и в корень и root, ничего не отображается. Привиди пожалуйста "нормальный" файл htaccess
Особенность в том что изображения лежат не в общей директории, доступ нужен к папке files

   
 
 автор: GeorgeIV   (18.07.2008 в 10:31)   письмо автору
 
   для: larush   (18.07.2008 в 10:24)
 

RewriteRule ^img/(.+)$ larush/$1 [E=REDIRECT_DONE:true] 

это неправильно, если ты что то нехочешь менять так иоставляешь
RewriteRule ^dir1/dir11/files/small/galery1/(.+)$ dir1/dir11/files/small/galery1/$1 [E=REDIRECT_DONE:true] 

   
 
 автор: larush   (21.07.2008 в 18:15)   письмо автору
 
   для: GeorgeIV   (18.07.2008 в 10:31)
 

спасибо !
на локальном денвере все отладил, а при потытке разметить на хосте- клик по любому линку вызывает ошибку 500... Это мне права какие-то не дали или я что-то не досмотрел ? index.php открывается, а вот остальное....

   
 
 автор: GeorgeIV   (21.07.2008 в 18:21)   письмо автору
 
   для: larush   (21.07.2008 в 18:15)
 

1. Проверииь пути
2. Поинтересоваться у хостера, есть ли возможность использовать .htaccess и mod_rewrite

   
 
 автор: larush   (21.07.2008 в 20:10)   письмо автору
 
   для: GeorgeIV   (21.07.2008 в 18:21)
 

спасибо !!!
узнал у хостеров пути от Document Root, вставил и свершилось чудо ! Преклоняюсь перед мудрыми ! :-)

   
 
 автор: Незнайка   (17.07.2008 в 19:49)   письмо автору
 
   для: larush   (16.07.2008 в 18:44)
 

>> Хостеры попросили обеспечить "дружественный формат урлов" - без ? и &. ...
>> ... хотелось бы http://localhost/larush/index.php?b=foto&page=1&s=16&pic=2.html
Так тут же есть "&"

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования