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

Форум Регулярные Выражения

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

 

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

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

тема: Помогите с рег. выражением для мод_реврайта
 
 автор: tAleks   (29.07.2011 в 16:25)   письмо автору
 
 

Есть такая запись в .htaccess

# /news/title_group-23 to /news/index.php?id_group=23
RewriteRule ^news/([A-Za-z0-9-]+)-([0-9]+)/?$ news/index.php?id_group=$2 [L]


Делает из такого URL: /news/title_group-23
такой: /news/index.php?id_group=23

Надо к этому делу привязать постраничную навигацию, т.е. расширить это рег. выражение чтобы оно делало из такого URL: /news/title_group-23?page=2
такой: news/index.php?id_group=$2&page=2

Кто знает как это сделать, подскажите плиз.

  Ответить  
 
 автор: f111   (29.07.2011 в 17:50)   письмо автору
 
   для: tAleks   (29.07.2011 в 16:25)
 

с восклицательным получается, с вопросительным не хочет
RewriteRule ^news/(?:\w+)-(\d+)(?:!page=(\d+))?$   news/index.php?id_group=$1&page=$2   [L]
# /news/title_group-23   и   /news/title_group-23!page=5

  Ответить  
 
 автор: tAleks   (30.07.2011 в 20:55)   письмо автору
 
   для: tAleks   (29.07.2011 в 16:25)
 

Решил задачу. :)

Если кому понадобится, то у меня получилось так:

# /news/title_group-23 to /news/index.php?id_group=23 
RewriteRule ^news/([A-Za-z0-9-]+)-([0-9]+)/?$ news/index.php?id_group=$2 [QSA,L] 


Дело в окончании - [QSA,L]

  Ответить  
 
 автор: f111   (30.07.2011 в 22:06)   письмо автору
 
   для: tAleks   (30.07.2011 в 20:55)
 

и где решение?

  Ответить  
 
 автор: cheops   (31.07.2011 в 11:25)   письмо автору
 
   для: f111   (30.07.2011 в 22:06)
 

Флаг QSA включает передачу GET-параметров в RewriteRule, в котором по умолчанию это отключено.

  Ответить  
 
 автор: f111   (31.07.2011 в 12:07)   письмо автору
 
   для: cheops   (31.07.2011 в 11:25)
 

у вас всегда такие подробные ответы, на этот раз что-то вы по скромничали))

  Ответить  
 
 автор: cheops   (31.07.2011 в 12:16)   письмо автору
 
   для: f111   (31.07.2011 в 12:07)
 

Просто проблема настолько часто встречается, что мне казалось нет такого mod-rewrite разработчика, который бы с ней не сталкивался... Когда вы используете RewriteRule он по умолчанию применяет регулярное выражение к адресу начиная с корня сайта /, заканчивая символом ? (если он есть), т.е. все CGI-параметры после ? отбрасываются. Что бывает зверски неудобно, особенно если поверх преобразованного адреса, например /catalog/tovar/car/2011/ вам нужно наложить постраничную навигацию /catalog/tovar/car/2011/?page=11. По умолчанию, RewriteRule отбросит ?page=11. Из этой ситуации можно выйти двумя способами, либо задействовать RewriteCond и разбирать переменную окружения QUERY_STRING, либо включить флаг QSA, который заставит RewriteRule читать данные и после символа ?

  Ответить  
 
 автор: f111   (31.07.2011 в 21:23)   письмо автору
 
   для: cheops   (31.07.2011 в 12:16)
 

>нет такого mod-rewrite разработчика
я не mod-rewrite разработчик, я просто любитель

спасибо за ответ

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

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