Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mod_rewrite 
:(
    Опции темы
Gold Dragon
Дата 24.1.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



как я не перечитывал ФАК и другие статьи, так и не понял как сделать ЧПУ

для начала у меня несколько вводных вопросов:
1. При использовании ЧПУ какие ссылки я должен использовать внутри сайта? т.е.
http://site.ru/kabak/desp/27
или
http://site.ru/index.php?pages=kabak&str=desc&id=27
2. При использовании ЧПУ доступ к страницам будет доступен по любой из ссылок или только по первой?
3. Должна ли в ссылке соблюдаться чёткая последовательность? Я имею в виду это
http://site.ru/index.php?pages=kabak&str=desc&id=27
и
http://site.ru/index.php?pages=kabak&id=27&str=desc

Вот какие у меня ссылки бывают

http://site.ru/
http://site.ru/index.php
http://site.ru/index.php?pages=kabak
http://site.ru/index.php?pages=kabak&str=desc
http://site.ru/index.php?pages=kabak&str=desc&id=27

как мне это организовать?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
AztEK
Дата 24.1.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 1
Всего: 18



1. http://site.ru/kabak/desp/27, они красивее, чем index.php?... не так ли smile Для этого мы их и юзаем
2. Мож сделать и так и так. Просто запретить использовать RewriteRule, если URL начинается с index.php?...
3. Честно говоря, не совсем понял, что ты имеешь в виду. Оптимальный вариант - как в примере Mal Hack'a, т.е. вносить url в переменную REQUEST_URI, а потом скриптом её парсить в входные данные.


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Gold Dragon
Дата 24.1.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



Цитата(AztEK @  24.1.2007,  13:08 Найти цитируемый пост)
1. http://site.ru/kabak/desp/27, они красивее, чем index.php?...
ты не понял (или я smile ), мне в самом скрипте какие ссылки использовать?

Цитата(AztEK @  24.1.2007,  13:08 Найти цитируемый пост)
 как в примере Mal Hack'a, т.е. вносить url в переменную REQUEST_URI
 да вот этот пример я так и не понял smile


ps
прикольное у тебя количество сообщений smile



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
AztEK
Дата 24.1.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 1
Всего: 18



Цитата

ты не понял (или я smile ), мне в самом скрипте какие ссылки использовать?

вот смотри.
Пользователь отправляет серверу site.ru запрос на страницу kabak/desp/27. Сервер в зависимости от настроек решает, что нужно отдать. По умолчанию он будет искать каталог kabak, в нем подкаталог desp и 27. Потом либо делает листинг директории либо загружает index.html.

Мы устанавливаем правила mod_rewrite, т.е. меняем настройи сервера для данной директории. Согласно этим настройкам, сервер не будет искать директории, а покажет страницу index.php, передав её переменную REQUEST_URI, равную /kabak/desp/27. Соответсвенно, если мы обратимся http://site.ru/kabak2/desp/26, переменная будет /kabak2/desp/26 и т.п. А наше дело - уже в скрипте выделить из этой строки нужные нам данные и показать нужную страницу.

К чему я это всё говорю? smile Юзай http://site.ru/kabak/desp/27 во всех ссылках сайта, всю работу по выполнению нужного куска кода сделает сервер+интерпретаор smile.

Цитата

да вот этот пример я так и не понял smile

что именно?


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Gold Dragon
Дата 24.1.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



совсем запутал по первому вопросу... Я спрашиваю ни когда юзер шлёт серверу, а когда сервер шлёт юзеру.  

в самой серверной части мне какие ссылки делать? такие
http://site.ru/index.php?pages=kabak&id=27&str=desc

если такие
http://site.ru/kabak/desp/27 
то если я захочу отказаться от ЧПУ, мне что переделывать весь движок???

Или mod_rewrite позволяет как туда так и обратно делать?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
mishaSL
Дата 24.1.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 54



На самом сайте ты должем преобразовать все ссылки в вид http://site.ru/kabak/desp/27. mod_rewrite преобразовывает только входные данные, то что ты отправляешь пользователю после выполнения, это уже mod_rewrite не трогает.

Добавлено @ 14:57 
Цитата(Gold Dragon @  24.1.2007,  14:25 Найти цитируемый пост)
то если я захочу отказаться от ЧПУ, мне что переделывать весь движок???


Сделай настройки движка с использованием ЧПУ и без использования.

Добавлено @ 15:03 
Привожу пример для твоего случая:
http://site.ru/ 
http://site.ru/index.php
http://site.ru/index.php?pages=kabak
http://site.ru/index.php?pages=kabak&str=desc
http://site.ru/index.php?pages=kabak&str=desc&id=27

пишешь в htaccess:
Код

RewriteEngine on
RewriteRule ^.htaccess$ - [F]

RewriteRule ^kabak[/]?$ index.php?pages=kabak [L]
RewriteRule ^kabak/desc[/]?$ index.php?pages=kabak&str=desc [L]
RewriteRule ^kabak/desc/([0-9]{1,20}).html$ index.php?pages=kabak&str=desc&id=$1 [L]



Это простейший пример, чтобы тебе был понятен сам принцип.

Соответственно ссылки у тебя должны быть следующего вида (у том порядке как у тебя):

http://site.ru/ 
http://site.ru/
http://site.ru/kabak/
http://site.ru/kabak/desc/
http://site.ru/kabak/desc/27.html




--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Mal Hack
Дата 24.1.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 15
Всего: 261



Gold Dragon, есть два варианта.
Первый вариант, когда mod_rewrite, работая между пользователем и скриптом, преобразует ссылки 
_http://site.ru/ 
_http://site.ru/
_http://site.ru/kabak/
_http://site.ru/kabak/desc/
_http://site.ru/kabak/desc/27.html
в:
_http://site.ru/?
_http://site.ru/?
_http://site.ru/?mod=kabak
_http://site.ru/?mod=kabak&par1=desc
_http://site.ru/?mod=kabak&par1=desc&par2=27

Естественно преобразования могут быть и другими.
В этом случае твой сайт, уже сами скрипты, должны работать, как обычно. Как буд-то mod_rewrite не существует в природе. В данном случае правила преобразования фактически - просто обертка, и скрипты с ней не связаны. Естественно, пользователь сможет зайти на сайт, непосредственно набрав в адресной строке, к примеру: _http://site.ru/?mod=kabak&par1=desc&par2=27.

Второй вариант, который описывал я, заключается в том, что скрипты уже ЗАВИСЯТ от mod_rewrite. Там запросы, как показано выше НЕ преобразуются в запросы вида: _http://site.ru/?mod=kabak&par1=desc&par2=27.
mod_rewrite, фактически, вешает все запросы на index.php. Практически, как ErrorReporting. Скрипты в данном случае параметры QUERY_STRING не получают. Они получают в переменной REQUEST_URI сам запрашиваемый адрес, т.к. /kabak/desc/27.html и после этого, должны его разобрать на составляющие и уже с ними работать. Получается вектор параметров, а не массив $_GET.

Лично я считаю второй вариант более удобным. ИМХО, конечно.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.0717 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.