Перенаправление default.aspx в корневой виртуальный каталог

У меня есть простое приложение ASP.NET 3.5, работающее под IIS7 в виртуальном каталоге. Таким образом, URL-адрес моего приложения похож на http://example.com/app . Я хочу 301-перенаправить запрос на example.com/app/default.aspx на example.com/app для лучшего SEO. Я должен сделать это перенаправление только с помощью кода, а не с помощью каких-либо настроек IIS. Я не могу сделать это с помощью кода, упомянутого в этой статье:

http://www.4guysfromrolla.com/articles/072810-1.aspx

Код:

if (request.RawUrl.Equals("/default.aspx"))
{
newUrl = string.Format("{0}://{1}{2}",
                 request.Url.Scheme,
                 request.Url.Authority,
                 request.RawUrl.Remove(request.RawUrl.LastIndexOf("/default.aspx", StringComparison.OrdinalIgnoreCase)));

               context.Response.Status = "301 moved permanently";
               context.Response.AddHeader("Location", newUrl);
}

, кажется, заходит в бесконечный цикл, когда приложение находится в виртуальном каталоге. свойство request.RawUrl всегда возвращает «/default.aspx» даже после перенаправления 301, вызывающего бесконечный цикл. Как я могу исправить эту проблему?

спасибо,

Асиф

13
задан jdphenix 20 March 2014 в 05:43
поделиться

1 ответ

Приведенный выше код будет работать нормально, если у вас нет подкаталога. Насколько я знаю, это ошибка в ASP.NET: Request.RawUrl НЕ ДОЛЖЕН содержать «/ default.aspx», если URL-адрес не имеет этого расширения. Я проверил ваш код, и он отлично работает без подкаталога, но если default.aspx находится в каталоге, объект Request.RawUrl не может избавиться от default.aspx и, следовательно, бесконечный цикл.

2
ответ дан 2 December 2019 в 02:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: