Самым распространенным способом решения этой проблемы является перенаправление, когда URL не соответствует ожидаемому. Обычно это делается с помощью какого-либо модуля mod_rewrite.
В ASP.NET MVC вам нужно будет перехватить входящий запрос как можно раньше в жизненном цикле запроса, проверить URL-адрес и затем перенаправить (код ответа 301 или 302) на правильный URL-адрес, если это необходимо.
Я нашел пример кода из этого поста в блоге: Канонические URL-адреса с ASP.NET MVC . Это демонстрирует один из способов достижения этого:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (Request.Url.Authority.StartsWith("www"))
return;
string url = (Request.Url.Scheme
+ "://www."
+ HttpContext.Current.Request.Url.Authority
+ HttpContext.Current.Request.Url.AbsolutePath
);
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", url);
Response.End();
}
Для тех из нас, кто работает с Mono и Apache или использует одно из расширений mod_rewrite для IIS, вот пример mod_rewrite:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [R=301,L]
Следуя этим советам о наличии записи A или CNAME, пользователи могут получать доступ к сайту только с обоих доменов, но это сокращает ваш Google Juice , поскольку у вас одинаковое содержание в двух разных URL.