Ich habe eine Reihe von Links mit ähnlicher Struktur:
example.com/index.php/path/some-path/some-subpath?parameter=1
Was ich umleiten möchte, nur um example.com/category/
Ich möchte aber nur den URL-Pfad abgleichen, dh. /index.php/path/some-path/some-subpath
, da der Abfrageparameter irrelevant ist.
Ich habe die folgende Regel ausprobiert:
RewriteRule ^/index.php/path/some-path/some-subpath?parameter=\dd\? /category/ [L,R=301]
Wenn die Abfragezeichenfolge irrelevant ist, kann sie einfach ignoriert werden. (Sie können die Abfragezeichenfolge ohnehin nicht mit der Anweisung RewriteRule
abgleichen.)
Versuchen Sie Folgendes in Ihrer .htaccess-Stammdatei, um mzuleiten die Anforderung:
RewriteEngine On
RewriteRule ^index.php/path/some-path/some-subpath$ /category/? [L,R=301]
In verzeichnisbezogenen .htaccess-Dateien wurde für den URL-Pfad, der mit RewriteRule
Muster übereinstimmt, das Verzeichnispräfix entfernt. Mit anderen Worten, es beginnt nicht mit einem Schrägstrich, ^index.php....
anstelle von ^/index.php....
.
Der ?
am Ende der RewriteRule
-Ersetzung ist erforderlich, um die Abfragezeichenfolge (falls vorhanden) aus der Anforderung zu entfernen. Andernfalls wird parameter=1
weitergeleitet und an die Ziel-URL angehängt.
Dies entspricht beliebig Abfragezeichenfolge, einschließlich einer leeren.
Answer by @MrWhite hat bei mir nicht funktioniert. Hier ist, was mit meiner Wordpress Site funktioniert.
Beispiel:
OLD URL: http://website.com/xxx/yyy/picture.png
NEW URL: http://website.com/wp-content/picture.png
Also möchte ich / xxx/yyy / durch den normalen / wp-content / Pfad von WordPress ersetzen.
Fügen Sie dies in Ihre .htaccess-Datei ein.
RewriteEngine on
RedirectMatch 301 /xxx/yyy/(.*) http://website.com/wp-content/$1