2016-09-05 1 views
0

Aufgrund der doppelten Inhaltsprobleme im im Versuch, eine Reihe von regulären Ausdrücken zu erstellen, in kanonischen Tag (in PHP) verwendet werden.PHP Regex: Entfernen von Teilen der URL für kanonische Tag Verwendung

Mein Kopf ist dynamisch und die kanonische URL wird derzeit auf

<link rel="canonical" href="'. BASEHREF . $_SERVER['REQUEST_URI'].'" /> 

besser verdeutlichen sollen, was im zu erreichen versuchen, ich werde einige Beispiele. (Die Ziffern sind Seitenzahlen). Zum Beispiel

example.com/cars/1,2,etc canonical url points -> example.com (home page) 
example.com/car/nissan canonical url points -> example.com (home page) 
example.com/new-phones/1,2,3etc canonical url points -> example.com/new-phones/ 

So im Wesentlichen, wenn die URL, die Worte Autos enthält, Auto + Ziffer oder Wort, ich will, dass Seite kanonische URL zur Homepage zeigen, und wenn die URL enthält/neu-Telefone/+ eine Zahl, die auf das übergeordnete Verzeichnis verweist.

hier ist der Code, den ich bisher habe, der nur die Seitenzahl von der kanonischen URL entfernt.

$url = BASEHREF.$_SERVER['REQUEST_URI']; 

$parts = parse_url($url); 
$scheme = $parts['scheme']; 
$host = $parts['host']; 
$path = $parts['path']; 

$items = preg_split('/\//',$path,null,PREG_SPLIT_NO_EMPTY); 

$thepage = $items[0]; 
$pagenumber = $items[1]; 
$canonical_url = ($pagenumber = '') ? $url : $scheme.'://'.$host.'/'.$thepage; 

Ich bin sicher, dass ich , wenn die Bedingungen aber im nicht gut in regex verwenden. Vielen Dank im Voraus.

Antwort

1

Dieser Regex ist für car(s)/number. /cars?/\d+

Und dieses wird Ihrem Telefon entsprechen. /new-phones/\d+

Sie können mit php oder Redirect-Regeln umleiten (ich würde es persönlich verwenden).

Wenn Sie über Redirect-Regeln umleiten möchten, müssen Sie wissen, unter welchem ​​Server Ihr Server läuft.

Da Sie unter nginx laufen, schauen Sie sich there, aber beachten Sie, dass eine Umleitungsregel muss jedoch sein. Vergewissern Sie sich, welche Art von Umleitung Sie verwenden (301 usw.).

+0

Ich laufe Nginx-Server – Skeptic