Url RewriteRule условия - PullRequest
       4

Url RewriteRule условия

3 голосов
/ 06 октября 2011

Я работаю над SEO для своего сайта и использую URL-адреса, такие как category/this-cat.html и category/this-cat-p2.html, чтобы перенаправить на index.php?mode=viewCat&id=this-cat и index.php?mode=viewCat&id=this-cat&start=10 соответственно.Проблема заключается в том, что моему RewriteRule требуется условие для проверки наличия в URL части -p2, а затем возврата либо 0, либо цифры после p.

Текущее правило:

RewriteRule ^category/(.*?)\.html$ index.php?mode=viewCat&title=$1

Я бы подумал, что правильный синтаксис для этого был бы:

RewriteRule ^category/(.*?)(?(-p)(.*?)|0)\.html$ index.php?mode=viewCat&title=$1&start=$2

однако это заставляет сервер возвращать ошибку 500,Даже после прочтения учебных пособий и работы с ними на прошлой неделе я все еще мало что понимаю.Кто-нибудь может объяснить, как сделать условное подобное этой работой?

1 Ответ

2 голосов
/ 06 октября 2011

Ты рядом.Я считаю, что вы пытаетесь не захватывать необязательную группировку -p#, но хотите получить цифру, если она существует.Флажок non-capture для группы - это префикс ?:.

RewriteRule ^category/(.*?)(?:-p(\d+))?\.html$ index.php?mode=viewCat&title=$1&start=$2

Примечание: Я использовал \d (цифра), так как лучше быть конкретным, кто высоответствия.Также start будет иметь цифру или ничего.Ваш серверный код лучше подходит для обработки остальной логики, которую вы описали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...