Erneutes Umschreiben der URL mit ausgewählten Abfragezeichenfolgen in .htaccess

8

Ich habe vor kurzem meinen CMS geändert und möchte einige meiner URLs neu schreiben, damit sie dem neuen URL- / Abfragezeichenfolgenparameterformat entsprechen.

Die alte URL war:

%Vor%

Die neue URL sollte lauten:

%Vor%

Mit anderen Worten, es gab mehrere Abfragezeichenfolgenparameter im alten Format, aber ich möchte nur den Tag Parameter auf s umschreiben, während derselbe Wert beibehalten wird. Die anderen Parameter sollten verworfen werden. Natürlich sollte die Reihenfolge der Parameter keine Rolle spielen. Es sollte auch egal sein, ob das Tag der einzige Parameter ist oder nicht.

Irgendwelche Ideen?

    
lupefiasco 21.01.2010, 17:06
quelle

3 Antworten

10

Sie können versuchen, regulären Ausdruck und Gruppierung zu verwenden, wenn Ihr Server dies unterstützt. Wenn ich mich nicht irre, muss man nur einen Parameter umschreiben, ich denke, man könnte etwas wie (wenn man Apache mit mod_rewrite benutzt) ausprobieren:

%Vor%

Bearbeiten: Ich habe den regulären Ausdruck ein wenig verbessert, um "tag" unabhängig von seiner Position in der Abfragezeichenfolge zu erhalten und Sonderzeichenfolgen wie & zu erhalten. Außerdem sollten Übereinstimmungen vermieden werden mit ähnlichen Parametern (dh: es würde nicht mit einem Parameter namens "Alttag" übereinstimmen).

Edit # 2: Eine Alternative (besonders wenn Sie mehrere Parameter filtern müssen) besteht darin, ein externes Programm zu verwenden, um das Neuschreiben durchzuführen. Diese Seite: Ссылка (insbesondere der Abschnitt "Externes Wiederbeschreibprogramm") enthält nützliche Informationen .

    
user241789 21.01.2010, 17:26
quelle
2

Wenn Sie auf einem Apache-Webserver die folgende Regel in Ihrem Dokumentstammverzeichnis in .htaccess einfügen, schreiben Sie die URLs wie folgt um:

%Vor%

Die obige Regel verwendet eine 302-Weiterleitung, sodass Ihr Browser die Weiterleitungsregel nicht "merkt", während Sie die Regel testen und optimieren. Sobald Sie mit dem Testen fertig sind, ändern Sie [R] auf [R = 301]. A 301 ist eine permanente Weiterleitung und ist besser für SEO.

    
Stephen M. Harris 18.10.2012 16:56
quelle
1

Hier ist eine weitere Version, um genau zu erfahren, was das OP bedeutet. @ smhmics Antwort ist nah dran. Ich bevorzuge nur das explizite Anfangs- oder kaufmännische Und, um den Parameter zu finden, und nicht den Wortgrenzen-Ansatz. (Die angenommene Antwort ist übermäßig kompliziert und hat einige Probleme.)

%Vor%

Das sagt:
(?: ) erfasst dies nicht als% -Zahl und ^|& am Anfang der Abfragezeichenfolge oder nach einem kaufmännischen Und-Zeichen (dies wirkt wie die Wortgrenze, aber speziell für URLs).
tag= den param, nach dem wir suchen.
( ) erfasst dies, in% 1.
[^&]* null oder mehr Zeichen, kein Und-Zeichen (und halt bei kaufmännischem Und-Zeichen oder läuft bis zum Ende ).

    
goodeye 27.06.2015 01:15
quelle

Tags und Links