2016-07-22 19 views
0

Ich hätte nicht gefragt, ob eine der anderen angebotenen Lösungen für mich gearbeitet hat, aber sie nicht. Teile von ihnen arbeiteten Teile nicht so ich dachte, ich würde für die vollständige Lösung einschließlich IIS-Einstellungen Neubindungen fragen.Benötigen Sie eine Website umleiten sowohl auf www und https

Ich habe eine Website (alte ASP-Klassiker), die nach IIS 8 (2012) verschoben wird.

Die Website funktioniert beim Testen von meiner Hosts-Datei.

Im Moment kann ich es nur um http zu https nicht nicht www Anforderungen an www.example.com umleiten.

Also ich habe 2 Bindungen in IIS (80/433) für www.example.com, ich habe es auch mit einem anderen Satz ohne www versucht. zB example.com, aber dann habe ich Fehler, wie das System versucht, Ihre Anfrage so zu bearbeiten, dass es zB folgende Redirects in einem Kreis etc. nicht zurückgibt.

Ich bin mir nicht sicher, ob das so war die 2 Lose von Bindungen oder die Regeln wurden dann ein bisschen unordentlich. Also brauche ich den ganzen Ansatz von IIS Binding-Setup und web.config Regeln (oder gibt es eine bessere Möglichkeit in IIS 8, um alle 80 Verkehr Port 443 zu erzwingen?)

Ich habe bereits eine Reihe von ISAPI-Regeln in meinem Web CONFIG-Datei wie

<rule name="Order" stopProcessing="false"> 
 
    <match url="^applications/order/?$" /> 
 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
 
    <action type="Rewrite" url="plugins/order.asp" /> 
 
</rule> 
 
<rule name="Robots 1" stopProcessing="false"> 
 
    <match url="^robotstxt\.asp$" /> 
 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
 
    <action type="Rewrite" url="robottxt.asp" /> 
 
</rule> 
 
<rule name="Robots 2" stopProcessing="false"> 
 
    <match url="^robotstxt$" /> 
 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
 
    <action type="Rewrite" url="robottxt.asp" /> 
 
</rule>

Also, als ich las, sah ich über die Menschen zu versuchen, auf einmal beiden Regeln zu tun, oder in zwei Sätzen, aber es gelang nur mir nie Feind zu arbeiten.

Ich brauche nicht HTTP-Anfragen auf https und für nicht www Anfragen geht sein teilweise gehen zu www.example.com z https://www.example.com

Im Moment arbeiten, aber nur, weil ich nicht die nicht www versuchen. Weiterleitungen

Ich habe 2 Bindungen für die Hostnamen www.example.com und diese eine Regel an der Spitze.

<rule name="Redirect to HTTPS" stopProcessing="true"> 
 
    <match url="(.*)" /> 
 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
 
    <add input="{HTTPS}" pattern="^OFF$" /> 
 
    </conditions> 
 
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" /> 
 
</rule>

So alle Regeln arbeiten http auf https einschließlich. Allerdings brauche ich auch nicht www Regeln um zu funktionieren.

Um es zu halten, um den Rest meiner Regeln UND um es zu bekommen ALSO Umleitung nicht www. Verkehr zu www.example.com z. B. https://www.example.com. Was ist der beste Weg, dies zu tun?

  1. Benötige ich ein anderes Bindungspaar ohne www. e.s Beispiel.com für 80/443?
  2. Dann, welche Regeln ich hinzufügen und welche Reihenfolge müssen sie als int .htacces werden sie von oben nach unten in Schleifen verarbeitet werden, ich frage mich nur mit IIS Weg gibt es auch einen logischen Pfad, der es über verursachen könnte Endlosschleifen.

Jede Hilfe auf diesem würde sehr geschätzt werden.

Dank

+0

Sind Sie sicher, dass es keine Umleitung in der Codierung der Website selbst gibt? Möglicherweise ein Include auf jeder Seite. – Amos

+0

Nein, es gibt keine Weiterleitungen auf den Seiten. Ich habe eine Bindung für https/http sowohl für www.domain.com und domain.com. Es passiert nichts anderes auf der Seite. – MonkeyMagix

+0

ok, ich habe nicht viel Erfahrung mit Bindungen, aber als Workaround könnten Sie eine codierte Umleitung auf jeder Seite enthalten. Entweder fügen Sie oben auf jeder Seite ein Include hinzu oder fügen einem vorhandenen Include ein wenig Code hinzu (solange es vorhanden ist, bevor HTML an den Browser gesendet wird) – Amos

Antwort

0

Ich denke, das Hinzufügen das ist, was ich tun würde, wenn Sie auf diese sehr schnell zu bekommen benötigt. eine Suche verwenden und Programm ersetzen hinzuzufügen das Tag in alle Seiten umfassen:

<!--#include file="redirect.asp"--> 

Erstellen Sie dann die „Redirect.asp“ mit etwas Ähnliches unter:

<% 
webDomain=LCase(Request.ServerVariables("HTTP_HOST")) 
scriptname=Request.ServerVariables("SCRIPT_NAME") 
If InStr(webDomain,"https://www.example.com")=0 Then 

    Response.Status="301 Moved Permanently" 
    Response.AddHeader "Location", "https://www.example.com" & scriptname 

End If 
%> 

Unter Umständen müssen Sie zwicken das ein bisschen, aber es ist sowieso die Grundlagen einer codierten Weiterleitung.