Отвечая на вопрос другого человека здесь о SO, я обнаружил, что в моем глобальном коде перенаправления есть небольшая "ошибка".
Я подключил класс Global к модулю HttpModule. Его работа заключается в обнаружении "http: / www." в URL и перенаправить пользователя на NON www. версия
Protected Sub OnBeginRequest(ByVal sender As Object, ByVal e As EventArgs)
'Force Removal of WWW
Dim application As HttpApplication = TryCast(sender, HttpApplication)
Dim url As Uri = application.Context.Request.Url
Dim hasWWW As Boolean = If(url.ToString.StartsWith("http://www."), True, False) 'UrlRegex.IsMatch(url.ToString())
If hasWWW Then
Dim newUrl As [String] = UrlRegex.Replace(url.ToString(), [String].Format("{0}://", url.Scheme))
application.Context.Response.Redirect(newUrl, False)
application.Context.Response.StatusCode = 301
application.Context.Response.End()
End If
End Sub
Проблема, с которой я столкнулся, заключается в том, что когда она перенаправляет страницу http://www.example.com/AboutUs
, цель состоит в том, чтобы она перешла на http://example.com/AboutUs
(переписанная страница), а вместо этого на http://example.com/Default.aspx?Slug=AboutUs
(исходная страница).
Я попытался немного взломать, изменив
Dim newUrl As [String] = UrlRegex.Replace(url.ToString(), [String].Format("{0}://", url.Scheme))
application.Context.Response.Status = "301 Moved Permanently"
application.Context.Response.AddHeader("Location", newUrl.Replace("Default.aspx", ""))
до
Dim newUrl As [String] = UrlRegex.Replace(url.ToString(), [String].Format("{0}://", url.Scheme))
newUrl = newUrl.Replace("Default.aspx?Slug=", "")
newUrl = newUrl.Replace("Default.aspx", "")
application.Context.Response.Status = "301 Moved Permanently"
application.Context.Response.AddHeader("Location", newUrl)
не то, что я хочу делать, так как это взлом, но это не сработало.
Любой совет по этому поводу был бы очень признателен!