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

Форум Apache

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

 

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

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

тема: mod_rewrite, скрытая передача параметров
 
 автор: wUPS   (09.02.2007 в 16:40)   письмо автору
 
 

Здравствуйте!
На каком-то сайте встречал онлайн библиотеку с адресами вида
http://bibla.site.ru/10/2000/5/
суть этого URL в следующем - 10й раздел, 2000 символов на страницу, 5я страница, т.е. видимо этот адрес скрыто перенаправляет на что то вроде
http://bibla.site.ru/index.php?razdel=10&on_page=2000&stranica=5
Хотелось бы это осуществить у себя, буду благодарен наглядному примерчику :)

Но это не все, как есть вопрос весьма не сложный :)

Дело в том, что в моем скрипте в разных случаях предполагается передача разного количества переменных, т.е. адрес http://site.ru/5/password/enter/ нужно скрыто обратить в http://site.ru/?id=5&pass=password&mode=enter,
а http://site.ru/5/password/user/search/ - на http://site.ru/?id=5&pass=password&username=user&mode=search

Возможно ли такое?
Огромное спасибо за любую информацию по теме =)

   
 
 автор: cheops   (10.02.2007 в 03:10)   письмо автору
 
   для: wUPS   (09.02.2007 в 16:40)
 

Это осуществляется при помощи директив модуля mod_rewrite в конфигурационном файле .htaccess. Параметры password, enter, user и search у вас статичные или могут применять любую форму?
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([0-9]+)/password/enter /index.php?id=$1&pass=password&mode=enter [L]
RewriteRule ^([0-9]+)/password/user/search /index.php?id=$1&pass=password&username=user&mode=search [L]

   
 
 автор: wUPS   (10.02.2007 в 22:35)   письмо автору
 
   для: cheops   (10.02.2007 в 03:10)
 

Параметры динамичны.

Сам представляю, что при таком раскладе задача пожалей становится неразрешима в принципе)

В таком случае переформирую вопрос так:
Из URL вида http://site.ru/var1/var2/var3/.../varN/ скрыто преобразовывать в http://site.ru/?var1/var2/.../varN/, все значения пожалуй легче будет парсить в самом скрипте)

   
 
 автор: cheops   (11.02.2007 в 12:35)   письмо автору
 
   для: wUPS   (10.02.2007 в 22:35)
 

А какие символы могут принимать параметры var1, var2 и сколько их всего может быть?

   
 
 автор: wUPS   (11.02.2007 в 13:24)   письмо автору
 
   для: cheops   (11.02.2007 в 12:35)
 

Это может быть до 32 символов 0-9A-z и некоторые спецсимволы (тире, подчеркивание, знак "равно" и т.д. - вообщем все, что допустимо использовать в URL)

   
 
 автор: cheops   (11.02.2007 в 21:22)   письмо автору
 
   для: wUPS   (11.02.2007 в 13:24)
 

Тогда можно поступить следующим образом
RewriteEngine on 
Options +FollowSymlinks 
RewriteBase / 
RewriteRule ^([0-9]+)/([0-9A-z-_\.=]+)/([0-9A-z-_\.=]+) /index.php?id=$1&pass=$2&mode=$3 [L] 
RewriteRule ^([0-9]+)/([0-9A-z-_\.=]+)/([0-9A-z-_\.=]+)/([0-9A-z-_\.=]+) /index.php?id=$1&pass=$2&username=$3&mode=$4 [L]

   
 
 автор: wUPS   (12.02.2007 в 20:11)   письмо автору
 
   для: cheops   (11.02.2007 в 21:22)
 

Благодарен)
Обидно только, что для каждого варианта (а их не мало) будет необходимо прописывать отдельную строчку)
cheops, (оффтоп) написали бы статейку по mod_rewrite - думаю многие были бы признательны - писать у вас отлично получается)

   
 
 автор: cheops   (12.02.2007 в 20:36)   письмо автору
 
   для: wUPS   (12.02.2007 в 20:11)
 

/*Записывая в план*/ Хорошо, действительно надо, только вряд ли статья появится быстро, так как перед ней в плане ещё несколько :)))

   
 
 автор: wUPS   (14.02.2007 в 21:18)   письмо автору
 
   для: cheops   (12.02.2007 в 20:36)
 

Окей, я уже начал ждать)))

Созрело дополнение моего вопроса, вот код:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([0-9]+)/([0-9A-z]+)/([0-9A-z]+)([0-9A-z=&]*) /index.php?id=$1&sess=$2&mode=$3&$4 [L]

Предполагаю, что посетитель перешедший на
http://site.ru/555/zsert4tw4s/script?a=a1&b=b1..
попадет на http://site.ru/index.php?id=555&sess=zsert4tw4s&mode=script&a=a1&b=b1,
но почему то QUERY_STRING никак не хочет попасть в мой URL :(
Получается аналогично

Options +FollowSymlinks
RewriteBase /
RewriteRule ^([0-9]+)/([0-9A-z]+)/([0-9A-z]+) /index.php?id=$1&sess=$2&mode=$3 [L]

тоесть все, что посетитель пишет в GET-запрос, должно попросту дописываться в конец адреса, ан не хочет :(

Подскажите, пожалуйста, что исправить/дополнить здесь необходимо?

   
 
 автор: cheops   (15.02.2007 в 00:50)   письмо автору
 
   для: wUPS   (14.02.2007 в 21:18)
 

Из URL http://site.ru/555/zsert4tw4s/script?a=a1&b=b1.. строка ?a=a1&b=b1.. отбрасывается - так mod_rewrite устроен, получать их следует при помощи серверной переменной %{QUERY_STRING}

   
Rambler's Top100
вверх

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