![]() |
|
![]() ![]() ![]() |
|
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 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 как мне это организовать? -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 1 Всего: 18 |
1. http://site.ru/kabak/desp/27, они красивее, чем index.php?... не так ли
![]() 2. Мож сделать и так и так. Просто запретить использовать RewriteRule, если URL начинается с index.php?... 3. Честно говоря, не совсем понял, что ты имеешь в виду. Оптимальный вариант - как в примере Mal Hack'a, т.е. вносить url в переменную REQUEST_URI, а потом скриптом её парсить в входные данные. -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
ты не понял (или я
![]()
![]() ps прикольное у тебя количество сообщений ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
AztEK |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 1 Всего: 18 |
вот смотри. Пользователь отправляет серверу 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 и т.п. А наше дело - уже в скрипте выделить из этой строки нужные нам данные и показать нужную страницу. К чему я это всё говорю? ![]() ![]()
что именно? -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
||||
|
|||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: нет Всего: 71 |
совсем запутал по первому вопросу... Я спрашиваю ни когда юзер шлёт серверу, а когда сервер шлёт юзеру.
в самой серверной части мне какие ссылки делать? такие http://site.ru/index.php?pages=kabak&id=27&str=desc если такие http://site.ru/kabak/desp/27 то если я захочу отказаться от ЧПУ, мне что переделывать весь движок??? Или mod_rewrite позволяет как туда так и обратно делать? -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
mishaSL |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1046 Регистрация: 10.1.2007 Где: Санкт-Петербург Репутация: 2 Всего: 54 |
На самом сайте ты должем преобразовать все ссылки в вид http://site.ru/kabak/desp/27. mod_rewrite преобразовывает только входные данные, то что ты отправляешь пользователю после выполнения, это уже mod_rewrite не трогает.
Добавлено @ 14:57
Сделай настройки движка с использованием ЧПУ и без использования. Добавлено @ 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:
Это простейший пример, чтобы тебе был понятен сам принцип. Соответственно ссылки у тебя должны быть следующего вида (у том порядке как у тебя): http://site.ru/ http://site.ru/ http://site.ru/kabak/ http://site.ru/kabak/desc/ http://site.ru/kabak/desc/27.html -------------------- Лучший способ научиться программированию - это посмотреть как это делают другие... |
||||
|
|||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 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. Лично я считаю второй вариант более удобным. ИМХО, конечно. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |