it-swarm.com.de

Wie kann ich nur einen Teil der URL abgleichen und die URL mit den Parametern in .htaccess umleiten?

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]
1
Alan Kis

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 RewriteRuleMuster ü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.

2
MrWhite

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
0
xlimit91