RewriteRule Обнаружение номеров больше 9 - PullRequest
1 голос
/ 03 ноября 2011

Я пытаюсь обнаружить числа в URL больше 9 в конце моего URL.Например:

"... com / celtic-jewelry / Traditional / 10"

В моем .htaccess у меня есть обходные пути, использующие две отдельные строки, которые работают как комбинация (1-я строка обнаруживает число меньше 10, 2-я обнаруживает число больше 9, но мне интересно, какой правильный метод? Мой .htaccess ниже, спасибо!

RewriteRule ^ celtic-jewelry / ([az-'/] +) / ([0-9]) $ /product.php?flags=$1&page=$2 [L]

RewriteRule ^ celtic-jewelry / ([az -' /] +) /(. [0-9]) $ /product.php?flags=$1&page=$2 [L]

Ответы [ 2 ]

0 голосов
/ 03 ноября 2011

Если я правильно понял:

RewriteRule ^celtic-jewelry/([a-z-'/]+)/([1-9][0-9]+)$ product.php?flags=$1&page=$2 [L]
0 голосов
/ 03 ноября 2011

Как насчет только одного единственного правила, которое заменит ваши два правила:

RewriteRule ^celtic-jewelry/([a-z'/-]+)/([0-9]+)$ /product.php?flags=$1&page=$2 [L]

Здесь [0-9]+ означает «одну или несколько цифр 0-9». Так что ловит все цифры 1, 2 или более цифр, только в одном правиле. Хотя заголовок вашего вопроса о числах больше 9, из контекста ясно, что вы пытаетесь захватить все цифры, будь то 1, 2 или более цифр.

Также обратите внимание, что в [a-z'/-]+ я переместил второй - в конец скобок. Вы написали это как [a-z-'/]+, но проблема в том, что второй - мог бы действовать как оператор диапазона, в то время как я думаю, что вы намеревались использовать его как буквальный символ тире. Чтобы - не действовал как оператор диапазона, вы должны либо поставить его первым или последним в скобках, либо экранировать его обратной косой чертой (\-).

...