htaccess verwenden, um alles nach einem Parameter umzuleiten - regex

Nick

Ich möchte, dass die folgende(n) URL(s) auf dieselbe URL umgeleitet wird, nur ohne das ?

Zum Beispiel:

https://www.example.com/this-is-static?numbersletterssymbols

geht zu

https://www.example.com/this-is-static

"Zahlenbuchstabensymbole" können alles sein

Ich möchte, dass dies ein 301 ist, mit htaccess (Apache)

Ich bin auf Folgendes gestoßen, die Variable scheint jedoch in Klammern zu stehen

RewriteCond %{QUERY_STRING} ^product=(.*)$
RewriteRule ^test.php$ %1/? [R=301,L]

Jeder Einblick ist willkommen

Herr weiß

Um die Abfragezeichenfolge (eine beliebige Abfragezeichenfolge) von einer beliebigen URL zu entfernen, können Sie mit mod_rewrite am Anfang Ihrer .htaccessDatei Folgendes tun :

RewriteEngine On

RewriteCond %{QUERY_STRING} .
RewriteRule ^ %{REQUEST_URI} [QSD,R=301,L]

Die Bedingung ( RewriteCondDirektive) behauptet einfach, dass es eine Abfragezeichenfolge gibt, die aus mindestens 1 Zeichen besteht (bestimmt durch die Regex .- ein einzelner Punkt).

Das QSDFlag (Abfragezeichenfolge verwerfen) entfernt die ursprüngliche Abfragezeichenfolge aus der umgeleiteten Antwort. Das QSDFlag erfordert Apache 2.4 (den Sie höchstwahrscheinlich verwenden). Die bei früheren Apache-Versionen verwendete Methode besteht wie in Ihrem Beispiel darin, a ?an die Ersatzzeichenfolge (im Wesentlichen eine leere Abfragezeichenfolge) anzuhängen .

Beachten Sie, dass Sie zuerst mit einer 302 (temporären) Weiterleitung testen sollten, um potenzielle Caching-Probleme zu vermeiden.


die Variable scheint jedoch in Klammern zu stehen

Die Klammern in der Regex erzeugen einfach eine "einfangende Gruppe", auf die später mit einer Rückreferenz verwiesen werden kann. z.B. In Ihrem Beispiel wird der Wert des productURL-Parameters in der RewriteRule Substitutionszeichenfolge mithilfe der %1Rückreferenz referenziert, um auf den Wert des URL-Parameters umzuleiten . Dies unterscheidet sich stark von dem, was Sie versuchen, und ist wohl ein Sicherheitsproblem. z.B. Es würde eine Anfrage an /test.php?product=https://malicious.coman umleiten https://malicious.com/und es einem potenziellen Hacker ermöglichen, Datenverkehr über Ihre Website weiterzuleiten.


UPDATE: ist es möglich, dass dies nur funktioniert, wenn die URL mit "this-is-static" beginnt (zum Beispiel)

Ja, das RewriteRule Muster (1. Argument) entspricht dem URL-Pfad, abzüglich des Schrägstrich-Präfixes. Zum Beispiel:

RewriteCond %{QUERY_STRING} .
RewriteRule ^this-is-static %{REQUEST_URI} [QSD,R=301,L]

Entspricht allen URLs, die mit beginnen /this-is-static .

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

So verwenden Sie htaccess, um Verzeichnisse umzuleiten

Regex, um alles nach einem bestimmten Symbol zu ersetzen? Java

Verwenden Sie htaccess, um zur Kleinbuchstabenversion derselben URL umzuleiten

Verwenden Sie .htaccess, um HTTP zu HTTPs umzuleiten

Verwenden Sie htaccess im Unterverzeichnis, um die Seite umzuleiten

So verwenden Sie string.replaceAll, um alles nach einem bestimmten Wort zu ändern

Suche nach einer Möglichkeit, alles unter einem Pfad in web.config umzuleiten

Verwenden von Regex, um alles in Klammern zu erhalten, gefolgt von einem bestimmten Wort

Schreiben Sie alles von http nach https mit htaccess um, aber antworten Sie mit einem Fehlercode, um die API auszuruhen

JS Regex: Entfernen Sie nach einem Wort (NUR) alles

Wie entferne ich alles nach einem Zeichen und Bindestrich in Regex?

Verwenden Sie vim, um alles in einem Absatz zu löschen

Aufteilen einer Zeichenfolge, um alles nach einem Trennzeichen zu entfernen

Umbenennen, um alles nach einem Sonderzeichen zu entfernen

Verwenden Sie Wildcard (*) mit RegEx in VBA, um alles abzugleichen

Verwenden Sie Regex, um alles zwischen zwei Sternchen zu erfassen

Wie kann ich .htaccess verwenden, um eine dynamische URL zu einer anderen dynamischen URL umzuleiten?

Verwenden von htaccess, um alte Domänen in das neue Domänenstammverzeichnis oder -verzeichnis umzuleiten

So verwenden Sie .htaccess, um diese seltsame Zeichenfolge umzuleiten: /% 20rel =

Regex, um alles nach dem optionalen Token zu erfassen

Regex, um alles nach dem letzten '/' in der URL abzufangen

Regex, um alles nach der Gmail-Antwortzeichenfolge zu entfernen

Regex, um alles nach dem zweiten Unterstrich abzugleichen

Verwenden von React Router, um nach erfolgreicher Anmeldung zur nächsten Seite umzuleiten

Wie man Regex bildet, um alles bis zu einem "("

Verwenden Sie den Befehl tee, um die Ausgabe in eine Datei in einem nicht vorhandenen Verzeichnis umzuleiten

Verwenden Sie Regex, um bei Übereinstimmung mit IIS nachzuschauen und umzuleiten

Verwenden der Python-Methode regex .match (), um die Zeichenfolge vor und nach einem Unterstrich abzurufen

Verwenden Sie Regex Java, um eine Zeichenfolge vor und nach einem bestimmten Zeichen zu ersetzen

TOP Liste

heißlabel

Archiv