2017-09-15 1 views
0

Ich muss jede Anfrage mit einem bestimmten Schlüsselwort in der URI umleiten, indem ich nur dieses einzelne Schlüsselwort durch ein anderes ersetze und den Rest so belasse, wie er auf einem Apache Webserver ist..htaccess: RedirectMatch mit RewriteCond

Aber es gibt eine Ausnahme von diesem Verhalten: Wenn ein anderes Schlüsselwort ist, zusätzlich zu dem ersten Schlüsselwort, einen Teil der URI, diese Umleitung sollte nicht verwendet werden.

Beispiel:

https://www.domain.tld/projects/myFirstProject 

sollte

https://www.domain.tld/references/myFirstProject 

aber wenn das Stichwort „Projekte“ zu

weitergeleitet werden in einem Unterverzeichnis von „Kategorie“ zu sein, sollte die Anforderung nicht weitergeleitet:

https://www.domain.tld/category/projects 

Hier ist, was ich für die RewriteMatch, die für die Umleitung funktioniert, aber nicht kann die Ausnahme mit „Kategorie“ Griff:

RedirectMatch 301 /projects(.*) /references$1 

Hinweis: Teile des URI andere als die Schlüsselwörter ersetzt werden sollte nicht geändert werden!

Wie kann ich einen korrekten RewriteCond hinzufügen? Muss ich RedirectMatch mit einer RewriteCond, RewriteRule-Lösung neu schreiben? Wie würde diese Lösung aussehen?

Vielen Dank!

Antwort

1

Also, wenn Sie nur umleiten möchten die URL beginnt mit projects Sie dies tun könnte:

RewriteEngine On 
RewriteRule ^projects(/.+|$) /references$1 [L,R=301,QSA] 

Demos:

EDIT

Oder, wenn Sie wollen, um diese Arbeit haben überall SOFERN category erscheint vorprojects in der URL können Sie es wie so tun konnte:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !category/(.*)projects 
RewriteRule (^|/)projects(/.+|$) /references$2 [L,R=301,QSA] 

Die RewriteCond stellt sicher, dass die RewriteRule nur, wenn das angewendet wird, URL enthält nicht category gefolgt von projects.

Verwandte Themen