Отредактируйте RewriteRule, чтобы разрешить заголовок в URL - PullRequest
0 голосов
/ 17 августа 2010

У меня реальная проблема с пониманием mod_rewrite, и я получил некоторую помощь в создании RewriteRule, чтобы иметь простые URL для нашего сайта

RewriteRule ^news/([a-zA-Z0-9_-]+)$ /news/$1/ [R]
RewriteRule ^news/([a-zA-Z0-9_-]+)/$ news/show.php?id=$1

Таким образом, кто-то может посетить site.com/news/700/, и URL будет выглядеть для них одинаково, но отправит запрос на наш сервер с /news/show.php?=700, чтобы вытащить статью.

Я хочу включить заголовок статьи в URL, чтобы сделать его более удобным для пользователя, когда кто-то видит ссылку на наш сайт.

site.com / news / 700 / heres-Our-Important-Title

Может кто-нибудь сообщить мне, что мне нужно изменить, чтобы это произошло, чтобы код по-прежнему работал правильно? Таким образом, URL может иметь этот дополнительный текст в конце, но он все равно будет извлекать только номер идентификатора после / news /.

Спасибо.

1 Ответ

1 голос
/ 17 августа 2010

Вам просто нужно обновить свой второй RewriteRule, чтобы разрешить (опционально) заголовок в конце. Кроме того, для удобства ведения домашнего хозяйства необходимо изменить первое правило по несвязанной причине:

RewriteRule ^news/([a-zA-Z0-9_-]+)$    /news/$1/ [R=301,L]
RewriteRule ^news/([a-zA-Z0-9_-]+)/.*$ news/show.php?id=$1

Также может быть плохой идеей изменить класс персонажа [a-zA-Z0-9_-] на [0-9], если ваши идентификаторы только числовые, в зависимости от того, как вам нравится обрабатывать 404.

...