2016-09-05 3 views
0

Из-за повторяющихся проблем с содержимым im, пытающихся создать ряд регулярных выражений, которые будут использоваться в каноническом теге (в php).Php Regex: Удаление частей URL для использования канонических тегов

Мой заголовок является динамическим и канонический URL в настоящее время устанавливается в

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

Чтобы demostrate лучше, что им пытаются достичь я дам несколько примеров. (Цифры являются номера страниц). Например

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/ 

Так по существу, когда URL содержит слово автомобили, автомобиль + цифру или слово, я хочу, чтобы страница канонического URL, чтобы указать на главную страницу, и когда URL содержит/новые-телефоны/+ число, указывающее на родительский каталог.

вот код, который у меня есть до сих пор, который удаляет только номер страницы из канонического url.

$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; 

Я уверен, что я должен использовать если условия, но им не хорошо в регулярных выражениях. Спасибо заранее.

ответ

1

Это регулярное выражение для car(s)/number. /cars?/\d+

И этот будет соответствовать вашему телефону. /new-phones/\d+

Вы можете перенаправить с помощью правил php или перенаправления (я бы использовал его лично).

Если вы хотите перенаправить с помощью правил переадресации, вам необходимо знать, под управлением вашего сервера.

Поскольку вы работаете под nginx, посмотрите there, но имейте в виду, что правило перенаправления должно быть. Убедитесь, что вы используете перенаправление (301 и т. Д.).

+0

Я запускаю сервер nginx – Skeptic