|
|
|
| Нужно чтобы при обращении к ссылке 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
|
Что не так? | |
|
|
|
|
|
|
|
для: Port_Artur
(14.08.2012 в 20:52)
| | RewriteRule ([-0-9]*)-(.*)/$ hot.php?star=$1 [L] | |
|
|
|
|
|
|
|
для: Jaroslav
(14.08.2012 в 22:11)
| | Почему не работает моя запись, я ведь явно указываю при обращении к какой странице передать переменную star файлу hot.php?
Ваш пример работает, почему не работает мой? | |
|
|
|
|
|
|
|
для: Port_Artur
(14.08.2012 в 22:48)
| | Разобрался, нужно все
%
заменить на
\x | |
|
|
|
|
|
|
|
для: 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 в 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/ , но обязательно с косой чертой на конце? Ведь в качестве параметра должно передаваться только то, что в кругых скобах. Как сделать, чтобы косой черты не было в передаваемом параметре, понятно что можно косую черту удалить в обработке., просто я хочу понять как должно быть правильно?
Подскажите пожалуйста, почему все молчат? | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|