2017-12-14 4 views
2

Ich hatte eine Frage zu einem Problem, das ich mit einer Rewrite-Regel habe, ich möchte eine Rewrite-Regel, die alles nach dem Bindestrich bekommt, aber es bekommt nur das letzte Wort?HTAccess Replace String mit Hypen

My-Link:

http://www.website.com/home/24-nieuws/143-kip-kip-kip-donington.html 

Ich habe die folgende Regel:

RewriteRule ^home/24-nieuws/(.*)-(.*).html$ http://www.website.com/$2 [R=301,L] 

Diese Regel gibt mir eine seltsame ouput, auch ich es seltsam finden, aber es könnte, weil ein Bindestrich wird als Regex-Zeichen verwendet?

Ausgang:

http://www.website.com/donington 

Es gesamten Text überspringt und bekommt nur das letzte Wort? Weiß jemand, was ich tun muss, um alles zwischen dem ersten Bindestrich und der .html zu bekommen?

Antwort

1

können Sie diese Regel verwenden:

RewriteRule ^home/24-nieuws/[^-]*-(.+)\.html$ http://www.website.com/$1 [R=301,L,NC] 

[^-]* negierte Zeichenklasse ist, die 0 oder mehr Nicht-Bindestrich Zeichen übereinstimmen. Es wird vor dem ersten Bindestrich nicht mehr übereinstimmen.

Es ist auch möglich, einen nicht-gierigen Quantor zu verwenden, damit es funktioniert:

RewriteRule ^home/24-nieuws/.*?-(.+)\.html$ http://www.website.com/$1 [R=301,L,NC] 

RegEx Demo

+1

Oh Dank dem funktioniert perfekt! Ich wusste das nicht, aber jetzt danke ich sehr! Dies wird in Zukunft eine große Hilfe sein: D – Brum

Verwandte Themen