Переписать правило с нумерацией страниц .htaccess - PullRequest
2 голосов
/ 28 марта 2020

У меня есть URL-адрес, подобный следующему:

http://example.com/category/title, который приходит по ссылке http://example.com/cview.php?url=title

Я хочу создать нумерацию страниц и быть похожим на http://example.com/category/title/page/1 или http://example.com/category/title/1 это приходит от http://example.com/cview.php?url=title&pageno=1.

Я пытался это в .htaccess без успеха

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^category/([^/]*)$/([^/]+)/?$ /cview.php?url=$2&pageno=$1 [L]

Может кто-нибудь помочь, пожалуйста?

1 Ответ

1 голос
/ 28 марта 2020
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 важен для того, чтобы избегать конфликтов.

...