2016-06-14 16 views
1

Ich muss einige Blog-URLs neu schreiben, um bestimmte Zeichen zu entfernen. Dies sind die Zeilen "a556" (a ist immer vorhanden, die Zahlen sind immer 3 Ziffern und sind zufällig). Dies geschieht entweder durch einen einfachen oder doppelten Bindestrich, den ich auch entfernen muss.Umschreiben einer URL zum Entfernen bestimmter Zeichen

müssen diese aus umleiten:

[domain]/Blog/[article_name] -a556

oder

[domain]/Blog/[article_name] - -a556

Zu

[domain]/Blog/[article_name_with_characters_removed]

ich die Regex denken den Text zu erfassen, zu entfernen ist:

([-]{1,2}a[0-9])\w+ 

Aber ich weiß nicht, wie man setze dies in eine Rewrite-Regel.

Kann jemand helfen?

+0

Sie wollen * umleiten * die alten URLs auf neue URLs? Oder möchten Sie Ihre URLs generell in diesem neuen Format anzeigen? – deceze

+0

Tipp: Diese Arten von Vanity-URLs sind leicht auszunutzen, da böswillige Benutzer Links wie '[domain]/blog/something-really-nasty-and-offensive-a556' erzeugen können. Besser, du überprüfst auch den Vanity-Teil, anstatt ihn wegzuwerfen. – Tomalak

+0

@Tomalak Was würde jemand davon gewinnen ...? – deceze

Antwort

-1

Suchen Sie nach einer Funktion, um Ihre alten URLs in neue umzuwandeln? So etwas sollte es tun, wenn Sie eine Reihe von URLs haben:

var processedURLs = oldURLs.map(function(url) { 
    return url.replace(/[-]{1,2}a[0-9]+/, ''); 
}) 
-1

Diese Rewrite-Regel könnte der Trick:

blog/(.+[a-zA-Z0-9])-+a[0-9]+  blog/$1 

Sie können vereinfachen [a-zA-Z0-9] Entfernen aller Zeichenbereiche, die nicht am Ende des Namens Slug des Artikels erscheinen können (zB [a-z0-9] oder [az]).

0

Bitte versuchen Sie dies:

RewriteEngine On 
RewriteRule (.*)-{1,2}a\d{3}(.*) $1$2 [R]