Назад | Перейти на главную страницу

IIS7 URLRewrite на сайте PHP

У меня есть сайт PHP, работающий на IIS7, и мне нужно добавить некоторую перезапись URL-адресов, но пока, похоже, мое правило игнорируется. Вот правило:

<rewrite>
    <rules>
        <rule name="VCard" stopProcessing="true">
            <match url="\?user=(.*)$" />
            <action type="Rewrite" url="http://www.otherserver.com/vcard.aspx?user={R:1}" redirectType="Permanent" appendQueryString="false" logRewrittenUrl="true" />
        </rule>
    </rules>
</rewrite>

При использовании пользовательского интерфейса для тестирования моего регулярного выражения он говорит, что http://www.myserver.com/?user=123456 соответствует правилу, и что R: 1 - «123456». Но когда я пытаюсь получить доступ к фактическому URL-адресу, похоже, что он не работает.

Ведение журнала не кажется слишком полезным:

2010-10-26 14:22:07 XXX.XXX.XXX.XXX GET / user=12345 80 - XXX.XXX.XXX.XXX Mozilla/5.0 (Windows;+U;+Windows+NT+6.1;+en-US)+AppleWebKit/534.10 (KHTML,+like+Gecko)+Chrome/8.0.552.11+Safari/534.10 200 0 0 187

Как я уже упоминал выше, сам сайт находится на PHP (который я менее знаком с хостингом на IIS). Может ли это мешать запуску модуля перезаписи? Я где-то упускаю важный шаг?

Соответствие URL-адреса соответствует только URL-адресу перед строкой запроса, например folder / vcard.aspx.

Вероятно, это условие для {QUERY_STRING}, которое вам нужно вместо этого. Установите. * Для URL-адреса, если хотите все поймать. Просто будьте осторожны, чтобы не зациклиться на этом запросе.

Это может быть полезно: http://weblogs.asp.net/owscott/archive/2010/04/20/url-parts-available-to-url-rewrite-rules.aspx

Неважно, что это PHP. Перенаправление происходит до обработки PHP.