Mod Rewrite - нужен модификатор Ungreedy? - PullRequest
1 голос
/ 30 января 2012

У меня есть этот код в файле .htaccess ..

RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.+)-headquarters-([0-9]+)\.html company.php?lid=$2

Теперь мой вопрос: что произойдет, если результат сопоставления из первых скобок содержит дефис?Существует очень хороший шанс, что многие из них будут.Это где ungreedy модификаторы входят!?

1 Ответ

0 голосов
/ 30 января 2012

Я не думаю, что в этом случае вам нужно сделать его несгибаемым. например test-headquarters-headquarters-42.html будет идеально соответствовать (test-headquarters будет $1).

Но для полноты предложу несколько вариантов

Вы можете сделать его неприличным, добавив ? после него. Таким образом, ваше правило станет (хотя, в этом случае не было бы ни одного случая, когда это привело бы к другому поведению):

RewriteRule ^(.+)?-headquarters-([0-9]+)\.html company.php?lid=$2

Вы также можете выбрать совпадение с чем угодно, кроме дефиса, используя

RewriteRule ^([^-]+)-headquarters-([0-9]+)\.html company.php?lid=$2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...