Проблема с http: // и http://www - PullRequest
0 голосов
/ 14 января 2010

У меня есть приложение, которое размещено на промежуточном сервере. Если я использую свое приложение, предоставив свои учетные данные, я могу открыть URL => http://mysite.com.

Однако, если я изменю URL-адрес на http://www.mysite.com, сайт снова отобразит страницу входа, чтобы запросить учетные данные (которые я только что предоставил).

Теперь на промежуточном сервере, если я наберу http://mysite.com в адресной строке, я получу http://mysite.com. Но когда я ввожу google.com в адресную строку, меня перенаправляют на http://www.google.com. Как это происходит?

Мой вопрос: когда мое приложение запускается и я набираю mysite.com, будет ли URL преобразован в http://www.mysite.com или мне нужно будет что-то сделать, чтобы преобразовать URL в тот, который содержит www?

Ответы [ 4 ]

6 голосов
/ 14 января 2010

Вам необходимо настроить сервер пересылки для переадресации субдомена www в корневой домен.

Вот несколько способов сделать это:

3 голосов
/ 14 января 2010

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

Если вы используете проверку подлинности с помощью форм, это можно сделать в файле web.config:

<forms name="name" 
       loginUrl="URL" 
       defaultUrl="URL"
       domain=".example.com">
</forms>

Обратите внимание на начальный период в домене - здесь записывается cookie-файл для аутентификации, который можно прочитать как с example.com, так и с www.example.com, что означает, что вы теперь войдете в оба варианта сайта.

При этом последний пример, который дает Скиллдрик, прекрасно работает и должен быть довольно простым для реализации на вашем сайте.

1 голос
/ 14 января 2010

У вас есть несколько разных вопросов, которые вы, похоже, задаете:

Прежде всего - почему вы набираете http://www.google.com при наборе http://google.com:

Это потому, что Google выполняет перенаправление на стороне сервера, поэтому каждый, кто наберет http://google.com, получит http://www.google.com /

Вы можете сделать то же самое, перенаправляя каждый вызов на http://www.mysite.com на http://mysite.com.

Этого можно добиться с помощью метода Response.Redirect, с помощью модуля перезаписи URL или любым из нескольких способов.

0 голосов
/ 14 января 2010

Перенаправление с одного URL на другой может быть обработано несколькими способами. Пара:

  1. Мета-тег обновления, размещенный на http://mysite.com, который содержит что-то вроде:

    <meta http-equiv="refresh" content="1;url=http://www.mysite.com">
    
  2. Перезапись URL, например, с Apache (http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html и http://www.widexl.com/tutorials/mod_rewrite.html могут быть места для поиска):

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www.mysite.com$ [NC]
    RewriteRule ^(.*)$ http://www.mysite.com/$1 [R,L]
    

    Это будет использоваться для внешнего перенаправления (HTTP 302) любого хоста, который не соответствует www.mysite.com, на http://www.mysite.com. То же самое, вероятно, также возможно с IIS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...