Ich habe einige Probleme mit Weiterleitungen und konnte diese nicht zum Laufen bringen. Ich möchte folgendes machen
http://www.example.com/seasonal/christmas?p=15
umleiten zu
http://www.example.com/holiday-decor/christmas.html
Ich habe mich gefragt, ob mir jemand bei der Umschreiberegel helfen könnte, damit die Abfragezeichenfolge nicht in der umgeleiteten URL angezeigt wird. Ich verwende . Htaccess mit einer Magento-Plattform-Site.
Standardmäßig wird die Abfragezeichenfolge der angeforderten URL an die umgeschriebene/umgeleitete URL angehängt.
In Apache 2.4 + Sie sollten das Flag QSD
(Query String Discard) in der Direktive RewriteRule
verwenden, um zu verwerfen die Abfragezeichenfolge von der umgeleiteten URL. Zum Beispiel:
RewriteCond %{QUERY_STRING} =p=15
RewriteRule ^seasonal/christmas$ /holiday-decor/christmas.html [QSD,R=301,L]
Die Anweisung RewriteCond
ist erforderlich, um mit dem Abfragezeichenfolgeteil der angeforderten URL übereinzustimmen. (Die mit dem Muster RewriteRule
übereinstimmende URL ist nur der URL-Pfad, der insbesondere die Abfragezeichenfolge ausschließt.) Das Präfix =
auf dem CondPattern =p=15
gibt eine wörtliche "Zeichenfolge" -Übereinstimmung an (im Gegensatz zu einer regulären Ausdrucksweise), sodass sie genau mit p=15
übereinstimmt.
In Apache 2.2 und früheren Versionen Sie müssten stattdessen einen ?
am Ende der RewriteRule
-Ersetzung anhängen, um die Abfragezeichenfolge zu entfernen. Dies schreibt im Wesentlichen eine leere Abfragezeichenfolge (der ?
wird nicht tatsächlich Teil der umgeleiteten URL). Beachten Sie, dass Sie die Abfragezeichenfolge in der Anforderung überschreiben, indem Sie eine beliebige Abfragezeichenfolge an die Ersetzungszeichenfolge anhängen. (Wenn Sie in dieser Situation auch die ursprüngliche Abfragezeichenfolge anhängen mussten, benötigen Sie das Flag QSA
- Anhängen der Abfragezeichenfolge. Andernfalls ist dieses Flag nicht erforderlich.)
In Apache 2.2 würden Sie beispielsweise die obige Anweisung RewriteRule
folgendermaßen ändern:
RewriteRule ^seasonal/christmas$ /holiday-decor/christmas.html? [R=301,L]
NB: Das Anhängen des ?
funktioniert auch unter Apache 2.4. Obwohl die Verwendung des Flags QSD
bevorzugt wird. Die beiden Methoden sind nicht identisch.