php — создание динамического канонического URL

В настоящее время на моем сайте у меня есть повторяющиеся URL-адреса следующим образом:

example.com/post_title/
example.com/post_title_2/
example.com/post_title_33/

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

<link rel="canonical" href="<?php echo $url ?>" />

где $url — адрес страницы. Так, например, если URL-адрес страницы — example.com/post_title_33/, канонический — example.com/post_title_33/.

Мой вопрос: как лучше всего сделать так, чтобы канонический URL-адрес всегда был example.com/post_title/?

Числа в конце URL-адреса могут быть любыми, а не только 2 или 33, как я использовал в своем примере.


person user2154299    schedule 07.11.2013    source источник
comment
Обратите внимание, что ваш echo должен использовать следующее, чтобы сделать его безопасным: <?php echo htmlspecialchars($url); ?>. Если URL-адрес содержит символы, несовместимые с данными атрибутов, это может привести к поломке всей страницы. См. stackoverflow.com/questions/2109583/   -  person Alexis Wilke    schedule 04.09.2017


Ответы (1)


Вы можете удалить цифры и начальное подчеркивание с помощью preg_replace:

<?

$input = array(
  'example.com/post_title/',
  'example.com/post_title_2/',
  'example.com/post_title_33/'
);

print_r(preg_replace('/_[0-9]+/', '', $input));

?>

Демонстрация: https://eval.in/63138

Руководство: http://us3.php.net/preg_replace

person scrowler    schedule 07.11.2013