2013-05-12 3 views
0

У меня возникла проблема с написанием шаблона регулярных выражений для URL-адреса перезаписи в IIS 7. Я выполняю работу непосредственно в файле web.config, и шаблон, в котором мне нужна помощь, описан ниже:URL Rewrite Несколько паролей

URL, входящие такие как следующие: http://www.domain.com/user/<USERNAME>/subscribers должно быть переписано в файл: http://www.domain.com/subscribers.php?u={R:1}

Где {R:1} имеет такое же значение, как это было бы в файле web.config, и должен быть равен <USERNAME> значения, переданного в URL.

Я искал несколько часов сегодня и еще несколько вчера, но не нашел совета по этому поводу. Я не очень хорошо знаком с Regex, но многому научился, чтобы попытаться решить эту проблему, но безрезультатно.

Заранее благодарен!

Обновление

  • Значение <USERNAME> может содержать любые буквенно-цифровые символы (0-9, A-Z, и A-Z), а также символы подчеркивания и точки.
  • Я пробовал множество различных моделей с модулем перезаписи. Один я начал это: ^user/(.+)/subscribers$

Полный блок XML для этого переписывания заключается в следующем:

<rule name="User Subscribers"> 
    <match url="^user/(.+)/subscribers$" /> 
    <action type="Rewrite" url="subscribers.php?u={R:1}" /> 
</rule> 

Этот формат работает для остальных перезаписей, однако, как только я стараюсь придерживаться статического , текст без регулярного выражения после шаблона регулярного выражения, я не могу заставить его работать. Проблема сводится к следующему: значение <USERNAME> устанавливается на значение, которое я хочу, с добавленной до конца частью перезаписи .

+0

Можете ли вы определить ''? (количество символов, какие символы ...). Вы уже пробовали что-либо с модулем перезаписи? – cheesemacfly

+0

@cheesemacfly Я обновлю свой вопрос с дополнительной информацией об этом. Спасибо за предложение! –

+0

Прочитав последнее редактирование, я думаю, вы должны использовать что-то вроде '^ user /(.+)(/ подписчиков) $', таким образом, '/ подписчики' будут частью обратной ссылки« R: 2 »вместо того, чтобы быть в конце 'R: 1' (у меня нет доступа к IIS прямо сейчас и не могу проверить ...) – cheesemacfly

ответ

0

Просто нашел решение этой проблемы, и это довольно глупый вопрос, который я должен был рассмотреть ранее.

В тот же web.config файл, в переписывает, я имел регулярное выражение (выше той, которая является предметом этого вопроса), который имеет следующую строку XML, связанный с ним:

<match url="^user/(.*)$" /> 

Потому что IIS читает web.config сверху вниз, он сопоставляется с тем, что находится в верхней части страницы (показано выше), а не тем, что было в вопросе, так как оно уже нашло совпадение.

Итак, для тех, кто в будущем, напишите наиболее конкретные шаблоны регулярных выражений в верхней части раздела правил перезаписи вашего web.config, а затем наиболее общие, чтобы избежать этой проблемы!

Спасибо за помощь!

Смежные вопросы