Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Migration der Apache mod_rewrite-Regeln zur erweiterten Richtlinie
Der Apache HTTP-Server bietet eine Engine namens mod_rewrite zum Rewrite von HTTP-Anforderungs-URLs. Wenn Sie die mod_rewrite-Regeln von Apache zum NetScaler migrieren, steigern Sie die Leistung des Back-End-Servers. Da der NetScaler normalerweise mehrere (manchmal Tausende von) Webservern ausgleicht, haben Sie nach der Migration der Regeln auf den NetScaler einen einzigen Kontrollpunkt für diese Regeln.
Im Folgenden finden Sie Beispiele für mod_rewrite-Funktionen und Übersetzungen dieser Funktionen in Rewrite- und Responder-Richtlinien auf dem NetScaler.
Konvertieren von URL-Variationen in kanonische URLs
Auf einigen Webservern können Sie mehrere URLs für eine Ressource haben. Obwohl die kanonischen URLs verwendet und verteilt werden sollten, können andere URLs als Verknüpfungen oder interne URLs existieren. Sie können sicherstellen, dass Benutzer die kanonische URL unabhängig von der URL sehen, mit der eine erste Anfrage gestellt wurde.
In den folgenden Beispielen wird die URL /~user in /u/user umgewandelt.
Apache mod_rewrite Lösung zum Konvertieren einer URL
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2[R]
NetScaler Lösung zum Konvertieren einer URL
add responder action act1 redirect '"/u/"+HTTP.REQ.URL.AFTER_STR("/~")'
add responder policy pol1 'HTTP.REQ.URL.STARTSWITH("/~") && HTTP.REQ.URL.LENGTH.GT(2)' act1
bind responder global pol1 100
Konvertieren von Hostnamen-Variationen in kanonische Hostnamen
Sie können die Verwendung eines bestimmten Hostnamens erzwingen, um eine Site zu erreichen. Beispielsweise können Sie die Verwendung von www.example.com anstelle von example.com durchsetzen.
Apache mod_rewrite Lösung zum Durchsetzen eines bestimmten Hostnamens für Sites, die auf einem anderen Port als 80 ausgeführt werden
RewriteCond %{HTTP_HOST} !^www.example.com
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) http://www.example.com:%{SERVER_PORT}/$1 [L,R]
Apache mod_rewrite Lösung zum Durchsetzen eines bestimmten Hostnamens für Sites, die auf Port 80 ausgeführt werden
RewriteCond %{HTTP_HOST} !^www.example.com
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.example.com/$1 [L,R]
NetScaler-Lösung zum Durchsetzen eines bestimmten Hostnamens für Sites, die auf einem anderen Port als 80 ausgeführt werden
add responder action act1 redirect '"http://www.example.com:"+CLIENT.TCP.DSTPORT+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.HOSTNAME.CONTAINS("www.example.com")&&!HTTP.REQ.HOSTNAME.EQ("")&&!HTTP.REQ.HOSTNAME.PORT.EQ(80)&&HTTP.REQ.HOSTNAME.CONTAINS("example.com")' act1
bind responder global pol1 100 END
NetScaler-Lösung zum Durchsetzen eines bestimmten Hostnamens für Sites, die auf Port 80 ausgeführt werden
add responder action act1 redirect '"http://www.example.com"+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.HOSTNAME.CONTAINS("www.example.com")&&!HTTP.REQ.HOSTNAME.EQ("")&&HTTP.REQ.HOSTNAME.PORT.EQ(80)&&HTTP.REQ.HOSTNAME.CONTAINS("example.com")' act1
bind responder global pol1 100 END
Verschieben eines Dokumentenstammes
Normalerweise basiert das Dokumentenstamm eines Webservers auf der URL “/”. Der Dokumentenstamm kann jedoch ein beliebiges Verzeichnis sein. Sie können den Datenverkehr zum Dokumentenstamm umleiten, wenn er vom obersten Verzeichnis “/” in ein anderes Verzeichnis wechselt.
In den folgenden Beispielen ändern Sie den Stammordner des Dokuments von/nach /e/www. Die ersten beiden Beispiele ersetzen einfach eine Zeichenfolge durch eine andere. Das dritte Beispiel ist universeller, da neben dem Ersetzen des Stammverzeichnisses auch der Rest der URL (Pfad und Abfragezeichenfolge) beibehält, z. B. /example/file.html nach /e/www/example/file.html umgeleitet wird.
Apache mod_rewrite Lösung zum Verschieben des Dokumentenstammes
RewriteEngine on
RewriteRule ^/$ /e/www/ [R]
NetScaler Lösung zum Verschieben des Dokumentenstammverzeichnisses
add responder action act1 redirect '"/e/www/"'
add responder policy pol1 'HTTP.REQ.URL.EQ("/")' act1
bind responder global pol1 100
NetScaler Lösung zum Verschieben des Stammdokuments und zum Anhängen von Pfadinformationen an die Anforderung
add responder action act1 redirect '"/e/www"+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.URL.STARTSWITH("/e/www/")' act1
bind responder global pol1 100 END
Umzug von Home-Verzeichnissen auf einen neuen Webserver
Möglicherweise möchten Sie Anfragen, die an Home-Verzeichnisse auf einem Webserver gesendet werden, an einen anderen Webserver umleiten. Wenn beispielsweise ein neuer Webserver im Laufe der Zeit einen alten ersetzt und Sie Home-Verzeichnisse an den neuen Speicherort migrieren, müssen Sie Anfragen für die migrierten Home-Verzeichnisse an den neuen Webserver umleiten.
In den folgenden Beispielen lautet der Hostname für den neuen Webserver newserver.
Apache mod_rewrite Lösung für die Umleitung auf einen anderen Webserver
RewriteRule ^/(.+) http://newserver/$1 [R,L]
NetScaler-Lösung für die Umleitung auf einen anderen Webserver (Methode 1)
add responder action act1 redirect '"http://newserver"+HTTP.REQ.URL'
add responder policy pol1 'HTTP.REQ.URL.REGEX_MATCH(re#^/(.+)#)' act1
bind responder global pol1 100 END
NetScaler-Lösung für die Umleitung auf einen anderen Webserver (Methode 2)
add responder action act1 redirect '"http://newserver"+HTTP.REQ.URL'
add responder policy pol1 'HTTP.REQ.URL.LENGTH.GT(1)' act1
bind responder global pol1 100 END
Arbeiten mit strukturierten Home-Verzeichnissen
Typischerweise hat eine Site mit Tausenden von Benutzern ein strukturiertes Home-Verzeichnis-Layout. Beispielsweise kann sich jedes Home-Verzeichnis in einem Unterverzeichnis befinden, das mit dem ersten Zeichen des Benutzernamens benannt wird. Zum Beispiel könnte das Home-Verzeichnis für jsmith (/~jsmith/anypath) /home/j/smith/.www/anypath sein, und das Home-Verzeichnis für rvalveti (/~rvalveti/anypath) könnte /home/r/rvalveti/.www/anypath sein.
Die folgenden Beispiele leiten Anfragen an das Home-Verzeichnis um.
Apache mod_rewrite Lösung für strukturierte Home-Verzeichnisse
RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3
NetScaler-Lösung für strukturierte Home-Verzeichnisse
NetScaler-Lösung für strukturierte Home-Verzeichnisse
add rewrite action act1 replace 'HTTP.REQ.URL' '"/home/"+ HTTP.REQ.URL.AFTER_STR("~").PREFIX(1)+"/"+ HTTP.REQ.URL.AFTER_STR("~").BEFORE_STR("/")+"/.www"+HTTP.REQ.URL.SKIP('/',1)'
add rewrite policy pol1 'HTTP.REQ.URL.PATH.STARTSWITH("/~")' act1
bind rewrite global pol1 100
Ungültige URLs auf andere Webserver umleiten
Wenn eine URL nicht gültig ist, sollte sie auf einen anderen Webserver umgeleitet werden. Beispielsweise sollten Sie zu einem anderen Webserver umleiten, wenn eine in einer URL benannte Datei auf dem Server, der in der URL benannt ist, nicht vorhanden ist.
Auf Apache können Sie diese Überprüfung mit mod_rewrite durchführen. Auf dem NetScaler kann ein HTTP-Callout nach einer Datei auf einem Server suchen, indem ein Skript auf dem Server ausgeführt wird. In den folgenden NetScaler-Beispielen verarbeitet ein Skript namens file_check.cgi die URL und verwendet diese Informationen, um das Vorhandensein der Zieldatei auf dem Server zu überprüfen. Das Skript gibt TRUE oder FALSE zurück, und der NetScaler verwendet den Wert, den das Skript zurückgibt, um die Richtlinie zu validieren.
Zusätzlich zur Durchführung der Umleitung kann der NetScaler benutzerdefinierte Header hinzufügen oder, wie im zweiten NetScaler-Beispiel, Text im Antworttext hinzufügen.
Apache mod_rewrite Lösung für die Umleitung, wenn eine URL falsch ist
RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f
RewriteRule ^(.+) http://webserverB.com/$1 [R]
NetScaler-Lösung für die Umleitung, wenn eine URL falsch ist (Methode 1)
add HTTPCallout Call
set policy httpCallout Call -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url.path -headers Name("ddd")
add responder action act1 redirect '"http://webserverB.com"+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.HEADER("Name").EXISTS && !SYS.HTTP_CALLOUT(call)' act1
bind responder global pol1 100
NetScaler-Lösung für die Umleitung, wenn eine URL falsch ist (Methode 2)
add HTTPCallout Call
set policy httpCallout Call -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url.path -headers Name("ddd")
add responder action act1 respondwith '"HTTP/1.1 302 Moved Temporarily\r\nLocation: http://webserverB.com"+HTTP.REQ.URL+"\r\n\r\nHTTPCallout Used"'
add responder policy pol1 '!HTTP.REQ.HEADER("Name").EXISTS && !SYS.HTTP_CALLOUT(call)' act1
bind responder global pol1 100
Umschreiben einer URL basierend auf der Zeit
Sie können eine URL basierend auf der Uhrzeit neu schreiben. In den folgenden Beispielen wird eine Anforderung für example.html je nach Tageszeit in example.day.html oder example.night.html geändert.
Apache mod_rewrite Lösung zum Rewrite einer URL basierend auf der Zeit
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule ^example.html$ example.day.html [L]
RewriteRule ^example.html$ example.night.html
NetScaler Lösung zum Umschreiben einer URL basierend auf der Zeit
add rewrite action act1 insert_before 'HTTP.REQ.URL.PATH.SUFFIX('.',0)' '"day."'
add rewrite action act2 insert_before 'HTTP.REQ.URL.PATH.SUFFIX('.',0)' '"night."'
add rewrite policy pol1 'SYS.TIME.WITHIN(LOCAL 07h 00m,LOCAL 18h 59m)' act1
add rewrite policy pol2 'true' act2
bind rewrite global pol1 101
bind rewrite global pol2 102
Umleitung zu einem neuen Dateinamen (Unsichtbar für den Benutzer)
Wenn Sie eine Webseite umbenennen, können Sie weiterhin die alte URL aus Gründen der Abwärtskompatibilität unterstützen und gleichzeitig verhindern, dass Benutzer erkennen, dass die Seite umbenannt wurde.
In den ersten beiden der folgenden Beispiele lautet das Basisverzeichnis /~quux/. Das dritte Beispiel beherbergt jedes Basisverzeichnis und das Vorhandensein von Abfragezeichenfolgen in der URL.
Apache mod_rewrite Lösung zum Verwalten einer Änderung des Dateinamens an einem festen Ort
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^foo.html$ bar.html
NetScaler Lösung zum Verwalten einer Änderung des Dateinamens an einem festen Ort
add rewrite action act1 replace 'HTTP.REQ.URL.AFTER_STR("/~quux").SUBSTR("foo.html")' '"bar.html"'
add rewrite policy pol1 'HTTP.REQ.URL.ENDSWITH("/~quux/foo.html")' act1
bind rewrite global pol1 100
NetScaler-Lösung zum Verwalten einer Änderung des Dateinamens unabhängig vom Basisverzeichnis oder den Abfragezeichenfolgen in der URL
add rewrite action act1 replace 'HTTP.REQ.URL.PATH.SUFFIX('/',0)' '"bar.html"'
Add rewrite policy pol1 'HTTP.REQ.URL.PATH.CONTAINS("foo.html")' act1
Bind rewrite global pol1 100
Umleitung zum neuen Dateinamen (für den Benutzer sichtbare URL)
Wenn Sie eine Webseite umbenennen, möchten Sie möglicherweise weiterhin die alte URL aus Gründen der Abwärtskompatibilität unterstützen und Benutzern ermöglichen, zu sehen, dass die Seite umbenannt wurde, indem Sie die im Browser angezeigte URL ändern.
In den ersten beiden der folgenden Beispiele findet eine Umleitung statt, wenn das Basisverzeichnis /~quux/ lautet. Das dritte Beispiel beherbergt jedes Basisverzeichnis und das Vorhandensein von Abfragezeichenfolgen in der URL.
Apache mod_rewrite Lösung zum Ändern des Dateinamens und der im Browser angezeigten URL
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^old.html$ new.html [R]
NetScaler-Lösung zum Ändern des Dateinamens und der im Browser angezeigten URL
add responder action act1 redirect 'HTTP.REQ.URL.BEFORE_STR("foo.html")+"new.html"'
add responder policy pol1 'HTTP.REQ.URL.ENDSWITH("/~quux/old.html")' act1
bind responder global pol1 100
NetScaler-Lösung zum Ändern des Dateinamens und der im Browser angezeigten URL unabhängig vom Basisverzeichnis oder den Abfragezeichenfolgen in der URL
add responder action act1 redirect 'HTTP.REQ.URL.PATH.BEFORE_STR("old.html")+"new.html"+HTTP.REQ.URL.AFTER_STR("old.html")'
add responder policy pol1 'HTTP.REQ.URL.PATH.CONTAINS("old.html")' act1
bind responder global pol1 100
Aufnahme von browserabhängigen Inhalten
Um browserspezifischen Einschränkungen - zumindest für wichtige Top-Level-Seiten - gerecht zu werden, müssen manchmal Einschränkungen für den Browsertyp und die Version festgelegt werden. Beispielsweise möchten Sie möglicherweise eine Maximalversion für die neuesten Netscape-Varianten, eine Mindestversion für Lynx-Browser und eine durchschnittliche Feature-Version für alle anderen festlegen.
Die folgenden Beispiele wirken auf den HTTP-Header “User-Agent”, sodass, wenn dieser Header mit “Mozilla/3” beginnt, die Seite MyPage.html in myPage.ns.html umgeschrieben wird. Wenn der Browser “Lynx” oder “Mozilla” Version 1 oder 2 ist, lautet die URL myPage.20.html. Alle anderen Browser erhalten Seite myPage.32.html.
Apache mod_rewrite Lösung für browserspezifische Einstellungen
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.*
RewriteRule ^MyPage.html$ MyPage.NS.html [L]
RewriteCond %{HTTP_USER_AGENT} ^Lynx/.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12].*
RewriteRule ^MyPage.html$ MyPage.20.html [L]
RewriteRule ^fMyPage.html$ MyPage.32.html [L]
NetScaler solution for browser-specific settings
add patset pat1
bind patset pat1 Mozilla/1
bind Patset pat1 Mozilla/2
bind patset pat1 Lynx
bind Patset pat1 Mozilla/3
add rewrite action act1 insert_before 'HTTP.REQ.URL.SUFFIX' '"NS."'
add rewrite action act2 insert_before 'HTTP.REQ.URL.SUFFIX' '"20."'
add rewrite action act3 insert_before 'HTTP.REQ.URL.SUFFIX' '"32."'
add rewrite policy pol1 'HTTP.REQ.HEADER("User-Agent").STARTSWITH_INDEX("pat1").EQ(4)' act1
add rewrite policy pol2 'HTTP.REQ.HEADER("User-Agent").STARTSWITH_INDEX("pat1").BETWEEN(1,3)' act2
add rewrite policy pol3 '!HTTP.REQ.HEADER("User-Agent").STARTSWITH_ANY("pat1")' act3
bind rewrite global pol1 101 END
bind rewrite global pol2 102 END
bind rewrite global pol3 103 END
Sperren des Zugriffs durch Roboter
Sie können verhindern, dass ein Roboter Seiten aus einem bestimmten Verzeichnis oder einer Reihe von Verzeichnissen abruft, um den Verkehr zu und von diesen Verzeichnissen zu erleichtern. Sie können den Zugriff basierend auf dem bestimmten Standort einschränken oder Anfragen basierend auf Informationen in User-Agent-HTTP-Headern blockieren.
In den folgenden Beispielen lautet der zu blockende Webspeicherort /~quux/foo/arc/, die zu blockenden IP-Adressen lauten 123.45.67.8 und 123.45.67.9, und der Name des Roboters lautet NameOfBadRobot.
Apache mod_rewrite Lösung zum Blockieren eines Pfades und eines User-Agent-Headers
RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot.*
RewriteCond %{REMOTE_ADDR} ^123.45.67.[8-9]$
RewriteRule ^/~quux/foo/arc/.+ - [F]
NetScaler-Lösung zum Blockieren eines Pfades und eines User-Agent-Headers
add responder action act1 respondwith '"HTTP/1.1 403 Forbidden\r\n\r\n"'
add responder policy pol1 'HTTP.REQ.HEADER("User_Agent").STARTSWITH("NameOfBadRobot")&&CLIENT.IP.SRC.EQ(123.45.67.8)&&CLIENT.IP.SRC.EQ(123.45.67.9) && HTTP.REQ.URL.STARTSWITH("/~quux/foo/arc")' act1
bind responder global pol1 100
Sperren des Zugriffs auf Inline-Grafiken
Wenn Sie feststellen, dass Personen häufig auf Ihren Server gehen, um Inline-Grafiken für den eigenen Gebrauch zu kopieren (und unnötigen Datenverkehr zu generieren), sollten Sie die Fähigkeit des Browsers einschränken, einen HTTP-Referer-Header zu senden.
Im folgenden Beispiel befinden sich die Grafiken in Example.
Apache mod_rewrite Lösung zum Blockieren des Zugriffs auf eine Inline-Grafik
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.\*$
RewriteRule .\*.gif$ - [F]
NetScaler-Lösung zum Blockieren des Zugriffs auf ein Inline-Image
add patset pat1
bind patset pat1 .gif
bind patset pat1 .jpeg
add responder action act1 respondwith '"HTTP/1.1 403 Forbidden\r\n\r\n"'
add responder policy pol1 '!HTTP.REQ.HEADER("Referer").EQ("") && !HTTP.REQ.HEADER("Referer").STARTSWITH("http://www.quux-corp.de/~quux/")&&HTTP.REQ.URL.ENDSWITH_ANY("pat1")' act1
bind responder global pol1 100
Erstellen erweiterungsloser Links
Um zu verhindern, dass Benutzer Anwendungs- oder Skriptdetails serverseitig kennen, können Sie Dateierweiterungen vor Benutzern ausblenden. Um dies zu tun, möchten Sie möglicherweise erweiterungslose Links unterstützen. Sie können dieses Verhalten erreichen, indem Sie Rewriteregeln verwenden, um allen Anforderungen eine Erweiterung hinzuzufügen oder um Anfragen selektiv Erweiterungen hinzuzufügen.
Die ersten beiden der folgenden Beispiele zeigen das Hinzufügen einer Erweiterung zu allen Anforderungs-URLs. Im letzten Beispiel wurde eine von zwei Dateierweiterungen hinzugefügt. Beachten Sie, dass das Modul mod_rewrite im letzten Beispiel die Dateierweiterung leicht finden kann, da sich dieses Modul auf dem Webserver befindet. Im Gegensatz dazu muss der NetScaler einen HTTP-Callout aufrufen, um die Erweiterung der angeforderten Datei auf dem Webserver zu überprüfen. Basierend auf der Callout-Antwort fügt der NetScaler der Anforderungs-URL die Erweiterung.html oder .php hinzu.
Hinweis
Im zweiten NetScaler-Beispiel wird ein HTTP-Callout verwendet, um ein auf dem Server gehostetes Skript namens file_check.cgi abzufragen. Dieses Skript prüft, ob das im Callout angegebene Argument ein gültiger Dateiname ist.
Apache mod_rewrite Lösung zum Hinzufügen einer .php-Erweiterung zu allen Anfragen
RewriteRule ^/?([a-z]+)$ $1.php [L]
NetScaler-Richtlinie zum Hinzufügen einer PHP-Erweiterung zu allen Anfragen
add rewrite action act1 insert_after 'HTTP.REQ.URL' '".php"'
add rewrite policy pol1 'HTTP.REQ.URL.PATH.REGEX_MATCH(re#^/([a-z]+)$#)' act1
bind rewrite global pol1 100
Apache mod_rewrite Lösung zum Hinzufügen von entweder .html- oder .php-Erweiterungen zu Anfragen
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME}.html –f
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.html [L]
NetScaler-Richtlinie zum Hinzufügen von entweder .html- oder .php-Erweiterungen zu Anfragen
add HTTPCallout Call_html
add HTTPCallout Call_php
set policy httpCallout Call_html -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url+".html"
set policy httpCallout Call_php -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url+".php"
add patset pat1
bind patset pat1 .html
bind patset pat1 .php
bind patset pat1 .asp
bind patset pat1 .cgi
add rewrite action act1 insert_after 'HTTP.REQ.URL.PATH' '".html"'
add rewrite action act2 insert_after "HTTP.REQ.URL.PATH" '".php"'
add rewrite policy pol1 '!HTTP.REQ.URL.CONTAINS_ANY("pat1") && SYS.HTTP_CALLOUT(Call_html)' act1
add rewrite policy pol2 '!HTTP.REQ.URL.CONTAINS_ANY("pat1") && SYS.HTTP_CALLOUT(Call_php)' act2
bind rewrite global pol1 100 END
bind rewrite global pol2 101 END
Umleiten einer funktionierenden URI in ein neues Format
Angenommen, Sie haben eine Reihe funktionierender URLs, die den folgenden ähneln:
/index.php?id=nnnn
Um diese URLs in /nnnn zu ändern und sicherzustellen, dass Suchmaschinen ihre Indizes auf das neue URI-Format aktualisieren, müssen Sie Folgendes tun:
- Leiten Sie die alten URIs auf die neuen um, damit Suchmaschinen ihre Indizes aktualisieren.
- Schreiben Sie die neue URI zurück in die alte, damit das Skript index.php korrekt ausgeführt wird.
Um dies zu erreichen, können Sie Markierungscode in die Abfragezeichenfolge einfügen (sicherstellen, dass der Markierungscode von Besuchern nicht gesehen wird) und dann den Markierungscode für das Skript index.php entfernen.
Die folgenden Beispiele leiten nur dann von einem alten Link zu einem neuen Format um, wenn in der Abfragezeichenfolge keine Markierung vorhanden ist. Der Link, der das neue Format verwendet, wird in das alte Format zurückgeschrieben, und der Abfragezeichenfolge wird eine Markierung hinzugefügt.
Apache mod_rewrite Lösung
RewriteCond %{QUERY_STRING} !marker
RewriteCond %{QUERY_STRING} id=([-a-zA-Z0-9_+]+)
RewriteRule ^/?index.php$ %1? [R,L]
RewriteRule ^/?([-a-zA-Z0-9_+]+)$ index.php?marker&id=$1 [L]
NetScaler solution
add responder action act_redirect redirect 'HTTP.REQ.URL.PATH.BEFORE_STR("index.php")+HTTP.REQ.URL.QUERY.VALUE("id")'
add responder policy pol_redirect '!HTTP.REQ.URL.QUERY.CONTAINS("marker")&& HTTP.REQ.URL.QUERY.VALUE("id").REGEX_MATCH(re/[-a-zA-Z0-9_+]+/) && HTTP.REQ.URL.PATH.CONTAINS("index.php")' act_redirect
bind responder global pol_redirect 100 END
add rewrite action act1 replace 'HTTP.REQ.URL.PATH.SUFFIX('/',0)' '"index.phpmarker&id="+HTTP.REQ.URL.PATH.SUFFIX('/',0)'
add rewrite policy pol1 '!HTTP.REQ.URL.QUERY.CONTAINS("marker")' act1
bind rewrite global pol1 100 END
Sicherstellen, dass ein sicherer Server für ausgewählte Seiten verwendet wird
Um sicherzustellen, dass nur sichere Server für ausgewählte Webseiten verwendet werden, können Sie den folgenden Apache mod_rewrite-Code oder NetScaler Responder-Richtlinien verwenden.
Apache mod_rewrite Lösung
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(page1|page2|page3|page4|page5)$ https://www.example.com/%1 [R,L]
NetScaler-Lösung mit regulären Ausdrücken
add responder action res_redirect redirect '"https://www.example.com"+HTTP.REQ.URL'
add responder policy pol_redirect '!CLIENT.TCP.DSTPORT.EQ(443)&&HTTP.REQ.URL.REGEX_MATCH(re/page[1-5]/)' res_redirect
bind responder global pol_redirect 100 END
NetScaler-Lösung mit Mustersätzen
add patset pat1
bind patset pat1 page1
bind patset pat1 page2
bind patset pat1 page3
bind patset pat1 page4
bind patset pat1 page5
add responder action res_redirect redirect '"https://www.example.com"+HTTP.REQ.URL'
add responder policy pol_redirect '!CLIENT.TCP.DSTPORT.EQ(443)&&HTTP.REQ.URL.CONTAINS_ANY("pat1")' res_redirect
bind responder global pol_redirect 100 END
In diesem Artikel
- Konvertieren von URL-Variationen in kanonische URLs
- Apache mod_rewrite Lösung zum Konvertieren einer URL
- NetScaler Lösung zum Konvertieren einer URL
- Konvertieren von Hostnamen-Variationen in kanonische Hostnamen
- Apache mod_rewrite Lösung zum Durchsetzen eines bestimmten Hostnamens für Sites, die auf einem anderen Port als 80 ausgeführt werden
- Apache mod_rewrite Lösung zum Durchsetzen eines bestimmten Hostnamens für Sites, die auf Port 80 ausgeführt werden
- NetScaler-Lösung zum Durchsetzen eines bestimmten Hostnamens für Sites, die auf einem anderen Port als 80 ausgeführt werden
- NetScaler-Lösung zum Durchsetzen eines bestimmten Hostnamens für Sites, die auf Port 80 ausgeführt werden
- Verschieben eines Dokumentenstammes
- Apache mod_rewrite Lösung zum Verschieben des Dokumentenstammes
- NetScaler Lösung zum Verschieben des Dokumentenstammverzeichnisses
- NetScaler Lösung zum Verschieben des Stammdokuments und zum Anhängen von Pfadinformationen an die Anforderung
- Umzug von Home-Verzeichnissen auf einen neuen Webserver
- Apache mod_rewrite Lösung für die Umleitung auf einen anderen Webserver
- NetScaler-Lösung für die Umleitung auf einen anderen Webserver (Methode 1)
- NetScaler-Lösung für die Umleitung auf einen anderen Webserver (Methode 2)
- Arbeiten mit strukturierten Home-Verzeichnissen
- Apache mod_rewrite Lösung für strukturierte Home-Verzeichnisse
- NetScaler-Lösung für strukturierte Home-Verzeichnisse
- Ungültige URLs auf andere Webserver umleiten
- Apache mod_rewrite Lösung für die Umleitung, wenn eine URL falsch ist
- NetScaler-Lösung für die Umleitung, wenn eine URL falsch ist (Methode 1)
- NetScaler-Lösung für die Umleitung, wenn eine URL falsch ist (Methode 2)
- Umschreiben einer URL basierend auf der Zeit
- Apache mod_rewrite Lösung zum Rewrite einer URL basierend auf der Zeit
- NetScaler Lösung zum Umschreiben einer URL basierend auf der Zeit
- Umleitung zu einem neuen Dateinamen (Unsichtbar für den Benutzer)
- Apache mod_rewrite Lösung zum Verwalten einer Änderung des Dateinamens an einem festen Ort
- NetScaler Lösung zum Verwalten einer Änderung des Dateinamens an einem festen Ort
- NetScaler-Lösung zum Verwalten einer Änderung des Dateinamens unabhängig vom Basisverzeichnis oder den Abfragezeichenfolgen in der URL
- Umleitung zum neuen Dateinamen (für den Benutzer sichtbare URL)
- Apache mod_rewrite Lösung zum Ändern des Dateinamens und der im Browser angezeigten URL
- NetScaler-Lösung zum Ändern des Dateinamens und der im Browser angezeigten URL
- NetScaler-Lösung zum Ändern des Dateinamens und der im Browser angezeigten URL unabhängig vom Basisverzeichnis oder den Abfragezeichenfolgen in der URL
- Aufnahme von browserabhängigen Inhalten
- Apache mod_rewrite Lösung für browserspezifische Einstellungen
- Sperren des Zugriffs durch Roboter
- Apache mod_rewrite Lösung zum Blockieren eines Pfades und eines User-Agent-Headers
- NetScaler-Lösung zum Blockieren eines Pfades und eines User-Agent-Headers
- Sperren des Zugriffs auf Inline-Grafiken
- Apache mod_rewrite Lösung zum Blockieren des Zugriffs auf eine Inline-Grafik
- NetScaler-Lösung zum Blockieren des Zugriffs auf ein Inline-Image
- Erstellen erweiterungsloser Links
- Apache mod_rewrite Lösung zum Hinzufügen einer .php-Erweiterung zu allen Anfragen
- NetScaler-Richtlinie zum Hinzufügen einer PHP-Erweiterung zu allen Anfragen
- Apache mod_rewrite Lösung zum Hinzufügen von entweder .html- oder .php-Erweiterungen zu Anfragen
- NetScaler-Richtlinie zum Hinzufügen von entweder .html- oder .php-Erweiterungen zu Anfragen
- Umleiten einer funktionierenden URI in ein neues Format
- Apache mod_rewrite Lösung
- Sicherstellen, dass ein sicherer Server für ausgewählte Seiten verwendet wird
- Apache mod_rewrite Lösung
- NetScaler-Lösung mit regulären Ausdrücken
- NetScaler-Lösung mit Mustersätzen