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

Форум Apache

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

 

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

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

тема: mod rewrite передача параметров.
 
 автор: off   (28.11.2005 в 19:49)   письмо автору
 
 

У меня есть url


http://mysite.ru/?page=news&action=show&id=43



Как сделать при помощи mod rewrite чтобы было

http://mysite.ru/news/?id=43 


Причем чтобы при уже измененном пути $_GET['action'] и $_GET ['page'] возвращало news и show соответсвенно?

---------------------------------------------------------------------------
И еще вопрос как реализуют передачу данных в строке запросв по такому виду:


http://mysite.ru/news/today/


где news-раздел, today - подраздел.

Не может же быть чтобы url было изначально, ну допустим


http://mysite.ru/?page=news&page2=today


а потом пределано реврайтом? А если уровень вложенности больше 2-х?

Это что-ж, если уровень вложенности допустим 5,т.е

news
|
today
|
blabla
|
blablabla
|
bla

то надо в строке запроса передавать:

http://mysite.ru/?page=news&page2=today&page3=blabla&page4=bla&page5=blablabla

чтобы было:

http://mysite.ru/news/today/blabla/bla/blablabla ?

   
 
 автор: glsv (Дизайнер)   (30.11.2005 в 23:44)   письмо автору
 
   для: off   (28.11.2005 в 19:49)
 


http://mysite.ru/news/?id=43

А action=show у Вас куда подевалось?

>Не может же быть чтобы url было изначально, ну допустим
http://mysite.ru/?page=news&page2=today
а потом пределано реврайтом?

Почему же не может. Так и делают.

>Это что-ж, если уровень вложенности допустим 5,т.е
Передача 5-ти параметров в URL - это в общем-то совсем не много.

А потом может быть 1 или 2 (или 3 или 4) поддиректории реальных, а оставшиеся появляются преобразованиями mod_rewrite.

   
 
 автор: off   (02.12.2005 в 20:34)   письмо автору
 
   для: glsv (Дизайнер)   (30.11.2005 в 23:44)
 

А вот в том то и вопрос. Можно ли скрыть action=show, но чтобы его можно было взять методом GET ?

   
 
 автор: off   (02.12.2005 в 20:37)   письмо автору
 
   для: off   (02.12.2005 в 20:34)
 

И еще вопр. а если уровень вложенности неограниченый (как это сделано у многих коммерческих cms)?

   
 
 автор: glsv (Дизайнер)   (02.12.2005 в 21:15)   письмо автору
 
   для: off   (02.12.2005 в 20:34)
 

>А вот в том то и вопрос. Можно ли скрыть action=show

Нет, скрыть нельзя. Можно как-то по другому зашифровать, например, так:

http://mysite.ru/news/show/?id=43

Но выглядит коряво.
Единственно, может быть у Вас всегда параметр action принимает значение show. Тогда, конечно, можно его не писать.

> а если уровень вложенности неограниченый (как это сделано у многих коммерческих cms)?
Что-то не понял вопроса.

   
 
 автор: off   (04.12.2005 в 21:19)   письмо автору
 
   для: glsv (Дизайнер)   (02.12.2005 в 21:15)
 

Допустим в cms реализована возможность создавать разделы бесконечного уровня вложенности. Т.е так:
1
|
2
|
3
|
4
|
5
|
... и так может быть сколько угодно

Как должен выглядеть сам url чтобы добится такого резулятата : http://site.ru/1/2/3/4/5/...... и т.д,
ведь не известно сколько пользователь может создать уровней вложенности?

А в большинстве коммерческих cms такое вроде бы реализованно....

   
 
 автор: glsv (Дизайнер)   (04.12.2005 в 23:40)   письмо автору
 
   для: off   (04.12.2005 в 21:19)
 

Но возможность создавать бесконечную вложенность разделов не означает, что они будут дублироваться в URL в следующем виде.

http://site.ru/1/2/3/4/5/

Логичней просто передавать идентификатор раздела

http://site.ru/index.php?id_pazdel=23

А уж какая там структура, насколько глубоко этот раздел находится и как дерево разделов построить – это уж пусть php-скрипт этим занимается.

Лично я не встречал CMS, работающих именно по такой схеме создания разделов

http://site.ru/1/2/3/4/5/

Да и сам бы не стал реализовывать такую схему. Слишком длинные URL будут получаться. Неудобно пользователям. Да и реализовывать подобную схему тоже неудобно. А если уж непременно нужно было сделать именно так, то сделал бы физическое создание директорий, без привлечения модулей Apache.

   
 
 автор: off   (05.12.2005 в 14:19)   письмо автору
 
   для: glsv (Дизайнер)   (04.12.2005 в 23:40)
 

Вот например design.ru, demo.abocms.ru, bitrix.ru зделаны по такому принципу.
http://site.ru/1/2/3/4/5/

ОК. Возник еще один вопр. Как можно передать данные при клике по ссылке, не используя методов $_GET и $_POST ?

Т.е есть скрипт. Если id=1 то выводиться конкретная новость. Ели нет id, то выводиться список новостей.

Допустим:

Есть страница ссылающаяся на скрипт по ссылке http:site.ru/script.php?id=1.
В этом случае выводиться новость под номером 1. А можно ли сделать так, чтобы ссылка выглядела http:site.ru/script.php (без id=1),а значение переменной id как нибудь передавалось другим образом ?

   
 
 автор: glsv   (06.12.2005 в 15:15)
 
   для: off   (05.12.2005 в 14:19)
 

>В этом случае выводиться новость под номером 1. А можно ли сделать так, чтобы ссылка выглядела http:site.ru/script.php (без id=1),а значение переменной id как нибудь передавалось другим образом ?

Нет. так сделать нельзя.

   
 
 автор: off   (06.12.2005 в 18:00)   письмо автору
 
   для: glsv   (06.12.2005 в 15:15)
 

Ясно. Тада только методом Post чтобы в адресной строке не видно было.

А можно, чтобы вместо кнопки submit была ссылка ане не кнопка?

   
 
 автор: glsv (Дизайнер)   (07.12.2005 в 00:15)   письмо автору
 
   для: off   (06.12.2005 в 18:00)
 

>А можно, чтобы вместо кнопки submit была ссылка ане не кнопка?
Вообще можно. С помощью JavaScript. Но какая у Вас стоит задача? Я предполагал, что сделать красивые ссылки. Или что-то другое нужно сделать?

Если же нужно сделать красивые ссылки, то POST - это тупиковый путь. Красивые ссылки ведь нужны для того, чтобы посетитель их запомнил и при возможности мог вернуться. А если Вы всю навигацию сделаете методом POST, то посетитель никуда вернуться не сможет. Он то ведь только GET может использовать. А GET ему нужную страницу не покажет, т.к. необходимых параметров там не будет.

   
Rambler's Top100
вверх

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