ASP.NET - можно ли клиентам отключать / игнорировать перенаправление 301 - PullRequest
1 голос
/ 23 января 2011

У меня есть 2 домена, которые соответствуют моему веб-сайту www.mysite.com и www.mysitecommonmisspelling.com, плюс IP-адрес. В моем файле Global.asax есть код, который должен был заставить всех пользователей и сканеров использовать только основной домен, например:

    Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)

    'If the domain isn't the correct top level domain for this environment,
    'we want to do a 301 redirect to tell the search engines that this is not the right domain to 
    'index.
    Dim Host As String = Me.EnvironmentHost
    Dim CurrentHost As String = Request.Url.DnsSafeHost

    If CurrentHost.ToLower <> Host.ToLower Then
        Dim Url As String = Request.Url.AbsoluteUri

        'The AbsolutUri property returns the Default.aspx whether it was actually specified
        'in the URL or not. Since our server is set up to respond to this as the default page, 
        'we can safely remove it from the URL if it actually exists. We don't want Default.aspx 
        'indexed anyway if possible.
        Url = Url.Replace("Default.aspx", "")
        Url = Url.Replace("default.aspx", "")

        'Replace the current host with the environment host
        Url = Url.Replace(CurrentHost, Host)


        Response.Clear()
        Response.StatusCode = 301
        Response.Status = "301 Moved Permanently"
        Response.AddHeader("Location", Url)
        Response.End()

    End If

End Sub

Я проверил, и Google не проиндексировал ни одной страницы на www.mysitecommonmisspelling.com, поэтому они, очевидно, уважают 301. Однако несколько дней назад у нас был клиент на нашем сайте, который получил бесплатную доставку, потому что лицензионный код, который не удалось зарегистрироваться только на www.mysite.com (другими словами, браузер смог получить доступ к www.mysitecommonmisspelling.com). В прошлом у нас были проблемы со сторонним компонентом доставки, поскольку пользователи могли получить доступ к сайту с помощью IP-адреса.

В любом случае мы не хотим, чтобы пользователи имели доступ к сайту без правильного домена, поэтому сертификат SSL не будет жаловаться.

Я искал способ отключить перенаправления 301 в IE7, но, похоже, не существует способа. Поэтому меня интересует, есть ли какие-либо браузеры, которые могут отключить 301, и если да, то какие обходные пути можно использовать, чтобы все браузеры на моем сайте перешли на основной домен, www.mysite.com?

1 Ответ

0 голосов
/ 23 января 2011

Этот тип перенаправления действительно принадлежит веб-серверу, а не приложению. Для IIS7 есть модуль перезаписи URL .

Возможно, вы захотите настроить IIS для размещения двух веб-сайтов, MySite и Misspelling, чтобы Misspelling никогда не попадал на ваш реальный сайт. Просто настройте редирект на этом сайте.

Возможно, вы захотите проверить Ошибка сервера , как правильно это сделать, поскольку я не являюсь экспертом по IIS7.

Что касается части вашего вопроса о браузерах, игнорирующих это: Конечно, браузеры могут решить не следовать 301-редиректу, но тогда они просто отобразят пустую страницу. Если кто-то может это обойти, значит, это строка:

 If CurrentHost.ToLower <> Host.ToLower Then

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

...