Как заставить example.com перенаправляться на сайт www.example.com с переписыванием URL-адресов в IIS7? Какое правило должно войти в web.config? Благодарю.URL-адрес перезаписи IIS7 - добавить префикс «www»
ответ
Это пример Microsoft для URL Rewrite Module 2.0, который перенаправляет * .fabrikam.com к www.fabrikam.com
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Add www" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{HTTP_HOST}" pattern="www.fabrikam.com" negate="true" />
</conditions>
<action type="Redirect" url="http://www.fabrikam.com/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Не уверен, что самым лучшим способом, чтобы сделать это, но у меня есть сайт со всеми старыми доменов/поддоменов работает этот web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Transfer" stopProcessing="true">
<match url=".*" />
<action type="Redirect" url="http://www.targetsite.com/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
кажется, чтобы получить работу.
Не будет ли это просто автоматически перенаправлять каждый запрос, который приходит на ваш сервер? Я бы ожидал, что ваши клиенты, если они проведут проверку своего трафика, смогут увидеть 301 для каждого запроса. – LeRoy
около года опоздать, чтобы ответить на ваш комментарий, но у меня есть одно приложение iis для www.targetsite.com и другое приложение, которое отвечает на любые домены, которые я хочу переслать. если в одном приложении есть оба, то, конечно, необходимо иметь условие. – Sciolist
Чтобы сделать его более универсальным Вы можете использовать следующие правила URL Rewrite, который работает для любого домена:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Add WWW" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(?!www\.)(.*)$" />
</conditions>
<action type="Redirect" url="http://www.{C:0}{PATH_INFO}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
Работает до тех пор, пока у вас нет субдоменов. – jpkeisala
Я не уверен, если это поможет, но я решил сделать это на уровне приложений. Вот фильтр быстрого действия, который я написал для этого. Просто добавьте класс где-то в свой проект, а затем вы можете добавить [RequiresWwww] к одному действию или к целителю.
public class RequiresWww : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase req = filterContext.HttpContext.Request;
HttpResponseBase res = filterContext.HttpContext.Response;
//IsLocal and IsLoopback i'm not too sure on the differences here, but I have both to eliminate local dev conditions.
if (!req.IsLocal && !req.Url.Host.StartsWith("www") && !req.Url.IsLoopback)
{
var builder = new UriBuilder(req.Url)
{
Host = "www." + req.Url.Host
};
res.Redirect(builder.Uri.ToString());
}
base.OnActionExecuting(filterContext);
}
}
Тогда
[RequiresWwww]
public ActionResult AGreatAction()
{
...
}
или
[RequiresWwww]
public class HomeController : BaseAppController
{
..
..
}
Надеется, что кто-то помогает. Ура!
Уверен, что это работает, но проблема сосания заключается в том, что если вам нужно отключить SSL от IIS .. ну .. вы не можете. Это для меня требуется, чтобы получить новую сертифицированную версию, например, зашифровать, просто быстро отключить перезагрузку, получить сертификаты и вернуться обратно. Таким образом мне нужно переиздавать. Это совсем не Полиморфно и считается плохой практикой. – ppumkin
- 1. Добавить www префикс в URL
- 2. апач правило перезаписи добавить WWW
- 3. Несколько IIS7 URL правила перезаписи
- 4. Правило перезаписи IIS7 не работает
- 5. url rewriting добавить префикс www с htaccess
- 6. Plesk WWW префикс
- 7. API для раздела перезаписи IIS7
- 8. URL-адрес перезаписи в IIS7
- 9. Перенаправление IIS7 с использованием модуля перезаписи Выпуск
- 10. Веб-сайт требует www. префикс?
- 11. Добавить www префикс в домен в Plesk Parallels
- 12. Ошибка компиляции при перезаписи webapp.dll в IIS7
- 13. Модуль перезаписи URL-адреса IIS7 Замените
- 14. Как установить правило перезаписи ISAPI на IIS7?
- 15. Перенаправление с использованием модуля перезаписи IIS7
- 16. Добавить правило перезаписи
- 17. Правило перезаписи Umbraco для доменов, отличных от www
- 18. Префикс www to url вызывает переадресацию
- 19. JQuery .post метод подразумевает WWW префикс
- 20. Как удалить www. префикс в ASP.NET MVC
- 21. Как использовать cURL без http: // www Префикс
- 22. Как заставить префикс www загрузить файл js
- 23. Нет www Префикс Возвращает Django 404
- 24. Удалить префикс WWW с вашего сайта
- 25. Добавить www обратно в URL-адрес, если он отсутствует, используя IIS7
- 26. Regex добавить префикс
- 27. Howto добавить префикс строки
- 28. Добавить префикс в io.Reader
- 29. Добавить www. когда я удаляю www
- 30. Включить префикс www при добавлении сайта в Google Webmaster Central?
дубликат http://stackoverflow.com/questions/1476934/forwarding-http-mydomain-com-ctrlr-act-val-to-http-www-mydomain-com-ctrlr-act/1476986#1476986 –
Почему нужно ли переписывать URL? Почему бы не традиционный подход: создать виртуальный хост, привязанный к 'example.com', который дает простой« HTTP-перенаправление »на http: // www.example.com /' (с кодом статуса 301 и без «точного назначения» ', поэтому путь остается неповрежденным). – bobince
Я считаю, что логичнее включать это поведение в самом приложении, а не создавать другое для его поддержки. Но в противном случае, вероятно, нет никакой разницы, или есть? – niaher