IIS переписать URL с точкой в ​​конце URL - PullRequest
3 голосов
/ 19 октября 2011

У меня есть несколько внешних ссылок на мой сайт, к которым по ошибке добавлен период.(поэтому я не могу их исправить).Поскольку входящие ссылки всегда хороши, я хочу перенаправить эти ссылки на легальную страницу.Я пробовал несколько правил в модуле urlrewrite для iis.5, и, кажется, ничто не захватывает этот URL.

Здесь я видел другие вопросы, касающиеся URL-адресов asp.net с периодами в конце, но я пытаюсь записать этот вопрос на уровне модуля перезаписи IIS.Есть какие-нибудь указания по созданию этой работы?

Ответы [ 3 ]

2 голосов
/ 18 мая 2015

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

Я предполагаю, что один из модулей, запущенных до модуля перезаписи url, завершает работу, за исключением того, что запрос не переходит к перезаписи запроса (подозреваю, что некоторые проверки безопасности). Таким образом, невозможно решить вашу проблему с помощью перезаписи URL.

Одним из возможных способов обхода проблемы может быть перенаправление запросов, заканчивающихся точкой '.' на самой ранней стадии в Global.asax, как здесь:

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    if (Context.Request.RawUrl.EndsWith(".aspx."))
    {
        //permanent redirect and end current request...
        Context.Response.RedirectPermanent(Context.Request.RawUrl.TrimEnd('.'), true);
    }
}

Это может быть далеко от оптимального ответа, но, по крайней мере, он выполняет свою работу;)

0 голосов
/ 13 ноября 2016

Я использовал решение, которое удаляет все конечные точки на уровне web.config:

<rule name="RemoveTrailingDots" stopProcessing="false">
    <match url="^(.*[^.])\.+$" />
    <action type="Rewrite" url="{R:1}" />
</rule>

Это правило просто переписывает URL-адрес запроса в начале моих правил перезаписи, что позволяет обрабатывать запрос черезобычные правила вместо того, чтобы быть пойманными в восходящем потоке

Если у вас больше нет правил для применения и вы просто хотите перенаправить что-либо с точками в конце, просто измените тип действия на Redirect (чувствителен к регистру)

0 голосов
/ 18 декабря 2011

Если у вас есть фиксированный набор неправильных входящих ссылок, вы можете сосредоточиться на перенаправлении основной части URL-адреса, а не точки.

Например, с этим URL: http://www.example.com/index.html.

Попросите IIS Rewrite найти URL-адрес, соответствующий «^ index.html. *», И перенаправить на нужную страницу. Это должно поймать URL как с точкой, так и без нее.

...