2016-10-19 4 views
0

Situation: Viele Seiten auf einer Website wurden "um eine Ebene höher" verschoben, z..htaccess Regex Weiterleitungen - wie ein Schlüsselwort zu entfernen?

www.example.com/all-widgets/red-widgets/widget001 ist jetzt www.example.com/red-widgets/widget001

Problem: viele veraltete Links, die heute nicht mehr existierenden/all-Widgets/Kategorie gehören.

Wie lautet die Regex-Syntax Entfernen Sie ein Keyword von einer URL?

Mit anderen Worten: „Wenn eine eingehende URL enthält dieses Schlüsselwort, entfernt nur dieses Schlüsselwort, aber den Rest der URL intakt lassen“.


Follow-up: es Situationen geben kann, in denen das Schlüsselwort ein exakt sein muss, 1-Zeit Spiel, weil es an anderer Stelle in der URL auftreten könnten.

Mit anderen Worten, es ist eine Möglichkeit, dass eine eingehende URL wie diese existieren könnte:

www.example.com/all-widgets/red-widgets/widget074-compatible-with-all-widgets

ich nur die 1. Auftreten von „all-Widgets“ (zur Fixierung der Kategorie entfernen müssen -Migrationsproblem), lassen Sie den Rest jedoch intakt (damit wird die tatsächliche Produkt-/Blogpost-URL nicht durchbrochen).

Antwort

0

Versuchen mit dieser:

RewriteRule /all-widgets/(.*) $1 [L, R=301] 
0

Die folgende Regex wird die führende all-widgets von Ihrer URL ^all-widgets/(.+)$ trennen. Anschließend können Sie Ihre Rewrite-Regel hinzufügen, basierend darauf, wie Sie auf Route wollen den Rest: zB

RewriteRule ^all-widgets/(.+)$ $1 
+0

Antrag auf Klarstellung: so lautet die Syntax 'RewriteRule^(alle-Widgets \ /) (. +) $ $ 2' wird neu schreiben' www.example.com/all-widgets/red -widgets/widget001' zu 'www.example.com/red-widgets/widget001'? Oder muss ich noch etwas hinzufügen? – TomJones999

+0

Ich aktualisierte meine Antwort ein wenig. Bitte prüfe. Ja, es wird Ihre URL wie bereits erwähnt überschreiben. Wenn es auf Ihrem Webserver einen neuen Pfad gibt, sollten Sie nichts hinzufügen. Es wird jedoch nicht auf die neue URL umgeleitet, sodass Ihre Nutzer weiterhin die alte URL sehen. –

+0

Es funktioniert nicht in Fällen, in denen die URL nicht mit "all-widgets" beginnt. – anubhava

0

Sie diese Regel verwenden kann erster Instanz von all-widgets von überall in URL zu entfernen. Es behandelt auch Fälle, in denen die URL nicht mit beginnt.

RewriteEngin On 
RewriteBase/

RewriteRule ^(?:|(.*?)/)all-widgets(/.*|)$ $1$2 [L,R=301,NE,NC] 

RegEx Demo

Verwandte Themen