Я видел тысячи таких примеров:IIS 7 Дружественные URL переписать
<rule name="ex1" enabled="false" stopProcessing="true">
<match url="^article/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="article/{R:1}.html" />
</rule>
Что я могу легко добраться до работы. Однако я пытаюсь сделать www.mydomain.net/test переписанным на www.mydomain.net/test.html, который я попытался выполнить с приведенным ниже конфигом.
<rule name="ex2" enabled="true" stopProcessing="true">
<match url="^/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/{R:1}.html" />
</rule>
К сожалению, у меня не было никакого успеха, и я получаю простой 404 при каждой попытке. Хотя, когда я проверяю свое регулярное выражение, он успешно подходит для чего-то, что я хочу сопоставить - например. www.mydomain.net/test.
Может ли кто-нибудь дать понять, почему это так?
(Использование Win7, IIS7 Ultimate).
Не уверен, что работает WHIT первое правило, которое не делает со вторым? Знаете ли вы, что когда вы нажимаете 'www.mydomain.net/test', только часть пути (здесь' test') сопоставляется с шаблоном, который вы определили? – cheesemacfly
Ну, первое правило работает, поскольку оно переписывает www.mydomain.net/article/test на www.mydomain.net/article/test.html, что является правильным. Второе правило, учитывая изменения, применяемые к регулярному выражению, я думал, будет работать на www.mydomain.net/test => www.mydomain.net/test.html. Тестирование второго регулярного выражения возвращает true для «test», но не для «/ test» или «www.mydomain.net/test», как вы можете легко видеть в регулярном выражении из отрицания^[^ /]. – Marcus
Хорошо, понял. Итак, в конце вы хотите вызвать правило перезаписи только тогда, когда запрошенный путь не содержит '/', но, возможно, в конце? – cheesemacfly