RewriteRule ^category/([^/]*)$/([^/]+)/?$ /cview.php?url=$2&pageno=$1 [L]
В середине шаблона RewriteRule
имеется ошибочный $
(привязка конца строки). Вы также, похоже, неправильно указали обратные ссылки $1
и $2
. Вы также разрешаете дополнительный трейлинг sla sh, но ваши примеры URL не используют это. ( необязательный конечный sla sh потенциально создает проблему с дублированным контентом.)
Если вы разрешите и /category/title/page/1
, и /category/title/1
, то вы потенциально создаете проблему с дублированным контентом. Предположительно, вы ссылаетесь только на один из этих форматов URL?
Поскольку номер страницы является «числом», то имеет смысл просто сопоставлять числа, а не что-нибудь - это также помогает избежать конфликтов с другими директивами.
Не похоже, что вам нужны условия (директивы RewriteCond
), которые проверяют, что запрос не сопоставляется с файлом или каталогом, поскольку я не ожидал, что запрос в форме /category/title/page/1
все равно сопоставить с файлом или каталогом?
Вместо этого попробуйте следующее (без директив RewriteCond
):
RewriteRule ^category/([^/]+)(?:/page)?/(\d+)$ /cview.php?url=$1&pageno=$2 [L]
Это соответствует /category/title/page/<num>
и /category/title/<num>
. Необязательный подшаблон (?:/page)
не захватывает, так что он не портит нумерацию обратных ссылок.
Помните также, что порядок правил в .htaccess
важен для того, чтобы избегать конфликтов.