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

Форум Apache

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

 

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

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

тема: Не работает RewriteRule
 
 автор: Port_Artur   (14.08.2012 в 20:52)   письмо автору
 
 

Нужно чтобы при обращении к ссылке http://сайт/1-звезда/, файлу hot.php передавалась переменная star=1. Файл hot.php лежит в корне сайта. При нажатии на ссылку преобразования не происходит, - вообще не происходит обращение к файлу hot.php.

RewriteEngine On
RewriteBase /
RewriteRule ^1-%d0%b7%d0%b2%d0%b5%d0%b7%d0%b4%d0%b0/$ hot.php?star=1


Что не так?

  Ответить  
 
 автор: Jaroslav   (14.08.2012 в 22:11)   письмо автору
 
   для: Port_Artur   (14.08.2012 в 20:52)
 

RewriteRule ([-0-9]*)-(.*)/$ hot.php?star=$1 [L]

  Ответить  
 
 автор: Port_Artur   (14.08.2012 в 22:48)   письмо автору
 
   для: Jaroslav   (14.08.2012 в 22:11)
 

Почему не работает моя запись, я ведь явно указываю при обращении к какой странице передать переменную star файлу hot.php?

Ваш пример работает, почему не работает мой?

  Ответить  
 
 автор: Port_Artur   (14.08.2012 в 23:05)   письмо автору
 
   для: Port_Artur   (14.08.2012 в 22:48)
 

Разобрался, нужно все

%

заменить на

\x

  Ответить  
 
 автор: Port_Artur   (15.08.2012 в 00:04)   письмо автору
 
   для: Port_Artur   (14.08.2012 в 23:05)
 

Вот так:

RewriteEngine On 
RewriteBase / 
RewriteRule ^1-\xd0\xb7\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb4\xd0\xb0/$ hot.php?star=1


Всё работает как надо.

Но появилась необходимость передачи переменной представляющей собой номер страницы в виде ссылки:

http://сайт/1-звезда/7/, где 7 - номер страницы. А номер может быть от 1 до 1000.

Вот так решил сделать:

RewriteRule ^1-\xd0\xb7\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb4\xd0\xb0/([^/\.]+)/?$ hot.php?star=1&page=$1


Не работает ни такая ссылка
http://сайт/1-звезда/
ни такая
http://сайт/1-звезда/7/

Что-то в записи не так, но вот что? Знаю только что то, что в круглых скобках передаётся в виде переменной как $1. В остально честно говоря не уверен.
А как правильно должна выглядеть запись, чтобы работали обе ссылки? Помогите пожалуйста.

  Ответить  
 
 автор: Port_Artur   (15.08.2012 в 19:34)   письмо автору
 
   для: Port_Artur   (15.08.2012 в 00:04)
 

Почему что так:

RewriteRule ^3-\xd0\xb7\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb4\xd1\x8b/(.*)?/?$ hot.php?star=3&page=$1


Что так:

RewriteRule ^3-\xd0\xb7\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb4\xd1\x8b/(.*)/?$ hot.php?star=3&page=$1


Переменная page передаётся как, например 2/ или 3/ , но обязательно с косой чертой на конце? Ведь в качестве параметра должно передаваться только то, что в кругых скобах. Как сделать, чтобы косой черты не было в передаваемом параметре, понятно что можно косую черту удалить в обработке., просто я хочу понять как должно быть правильно?

Подскажите пожалуйста, почему все молчат?

  Ответить  
 
 автор: Sfinks   (17.08.2012 в 09:48)   письмо автору
 
   для: Port_Artur   (15.08.2012 в 19:34)
 

> Почему ........ Переменная page передаётся как, например 2/ или 3/ , но обязательно с косой чертой на конце?

Потому что у вас на конце стоит "/?" - т.е. может отсутствовать, а в скобках ".*" - т.е. жадный поиск, т.е. "съесть максимум возможного".

Исправить можно исправив "жадный" поиск на "не жадный": (.*) на (.*?)
либо, раз вам нужны цифры, более корректно будет цифры и искать:
RewriteRule ^3-\xd0\xb7\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb4\xd1\x8b/(\d*)/?$ hot.php?star=3&page=$1
либо
RewriteRule ^3-\xd0\xb7\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb4\xd1\x8b/([0-9]*)/?$ hot.php?star=3&page=$1
либо
RewriteRule ^3-\xd0\xb7\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb4\xd1\x8b/([0123456789]*)/?$ hot.php?star=3&page=$1

  Ответить  
Rambler's Top100
вверх

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