Jak zmusić witrynę example.com do przekierowania na stronę www.example.com z przepisywaniem adresów URL w IIS7? Jaka zasada powinna przejść do web.config? Dzięki.Przekierowanie URL IIS7 - Dodaj prefiks "www"
Odpowiedz
Jest to próba Microsoftu na URL Rewrite Module 2.0 który przekierowuje * .fabrikam.com do 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>
Nie wiesz o możliwie najlepszy sposób, aby to zrobić, ale mam stronę z wszystkich domen/subdomen starych uruchomionych ten 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>
wydaje się to zadanie.
Czy to nie byłoby automatyczne przekierowanie każdego żądania przychodzącego na serwer? Oczekuję, że klienci, jeśli sprawdzą swój ruch, zobaczą 301 na każde żądanie. – LeRoy
o rok spóźniony, aby odpowiedzieć na Twój komentarz, ale mam jedną aplikację iis dla witryny www.targetsite.com i inną aplikację, która odpowiada na wszelkie domeny, które chcę przekazać. jeśli jedna aplikacja obsługuje oba, konieczne jest posiadanie warunku. – Sciolist
Aby uczynić go bardziej ogólny można wykorzystać następującą regułę URL Rewrite który pracuje dla dowolnej domeny:
<?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>
Działa tak długo, dopóki nie masz subdomen. – jpkeisala
nie jestem pewien, czy to pomaga, ale zdecydowaliśmy się to zrobić na poziomie aplikacji. Oto szybki filtr akcji, który napisałem, aby to zrobić. Po prostu dodaj klasę gdzieś w projekcie, a następnie dodaj [RequiemWww] do pojedynczej akcji lub całego kontrolera.
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);
}
}
Następnie
[RequiresWwww]
public ActionResult AGreatAction()
{
...
}
lub
[RequiresWwww]
public class HomeController : BaseAppController
{
..
..
}
nadzieja, że ktoś pomaga. Twoje zdrowie!
Jestem pewien, że to działa, ale problemem jest to, że jeśli chcesz wyłączyć SSL z IIS ... cóż ... nie możesz. To jest dla mnie wymagane, aby uzyskać nowe certyfikaty z pozwalać na szyfrowanie na przykład, wystarczy szybkie przepisanie wyłączyć, uzyskać certyfikaty, włączyć ponownie. W ten sposób muszę ponownie opublikować. To nie jest bardzo polimorficzne i uważa się za złą praktykę. – ppumkin
- 1. Usuń URL prefiks z String (http:/www, etc.)
- 2. prefiks $ http url
- 3. Nginx: Przekierowanie nie-www do www https
- 4. .htaccess przekierowanie non-www do WWW zachowaniu URI ciąg
- 5. Dodaj prefiks/sufiks do wartości znacznika wejściowego
- 6. Dodaj http: // www. w tekście, jeśli nie, istnieje
- 7. Przekierowanie adresu URL Django
- 8. Przekierowanie (URL) nie działa
- 9. Wyczyść przekierowanie adresu URL
- 10. URL Przekierowanie JavaScript
- 11. Przepisywanie adresów URL w IIS7: Jak nie rezygnować z protokołu HTTPS z przepisanego adresu URL?
- 12. Przekierowanie próśb innych niż www do adresów www w Railsach
- 13. Przekierowanie non-www do www z node.js i ekspresowe
- 14. . Htaccess przekierowanie www do non-www z SSL/HTTPS
- 15. Przekierowanie URL w IIS7 - czy mogę użyć stopProcessing = "false" z regułą przekierowania?
- 16. URL Rewrite z Joomla na IIS7
- 17. Przekierowanie adresu URL usługi IIS {R: N}
- 18. non www .htaccess przekierowanie - ignorować inne subdomeny
- 19. .htaccess przekierowanie uszkodzonych adresów URL
- 20. Przekierowanie Lokalizacja, ale nie URL
- 21. Błąd przepisywania adresu URL w aplikacjach WWW
- 22. Ograniczenie adresu IP dla folderu aplikacji WWW, w IIS7
- 23. .htaccess przekierowanie zarówno http: // i bez www i https: // www na https: // www non-
- 24. Przekierowanie czystej domeny do www za pomocą DNSimple
- 25. Dodaj nagłówek WSSE SOAP do referencji WWW
- 26. ASP.MVC 3 Razor Dodaj Prefiks modelu w rozszerzeniu Html.PartialView
- 27. Dodaj prefiks do wszystkich punktów końcowych siłownika sprężynowego
- 28. inna sesja z adresem URL z-www i bez-www
- 29. Perl WWW :: Mechanize (lub LWP) get przekierować url
- 30. Przekierowanie poddomeny URL do podkatalogu URL na Amazon AWS
duplikat http://stackoverflow.com/questions/1476934/forwarding-http-moja_domena-com-ctrlr-act-val-to-http-www-mydomain-com-ctrlr-act/1476986#1476986 –
Dlaczego czy musi to być przepisywanie adresów URL? Dlaczego nie tradycyjne podejście: utwórz wirtualny host powiązany z 'example.com', który daje proste 'Przekierowanie HTTP' na' http: // www.example.com/'(z kodem stanu 301 i bez" dokładnego miejsca docelowego ") "opcja, więc ścieżka pozostaje nienaruszona). – bobince
Uważam, że bardziej logiczne jest umieszczenie tego zachowania w samej aplikacji, zamiast tworzenia innego, aby ją wspierać. Ale poza tym prawdopodobnie nie ma żadnej różnicy, czy też istnieje? – niaher