2014-09-03 2 views
-1

Я пытаюсь создать канонический тег только для главной страницы, но поскольку я использую общий вызов, он показывает любой URL-адрес, даже если мы находимся на главной странице, но с другим URL-адресом.Удалить запрос из php echo url call

Ex.

В этом URL-адресе: http://www.example.com/?something=here, я хочу поместить URL-адрес канонического тега на домашнюю страницу без запроса.

Но если у меня есть другой URL-адрес (например, /contact.php), я хочу, чтобы он показывал тот же URL-адрес для canonical с /contact.php.

Я использую этот код, который извлекает URL, где я нахожусь на сайте:

<link rel="canonical" href=<?php $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo $url; ?>" /> 

Что-то отсутствует в коде, чтобы удалить только определенные запросы или слова. Это возможно?

ответ

0

Нет ни одной комманды/глобальной сети, которая может обеспечить вам часть сегмента/uri без параметров. Вы можете разбить код так:

<?php 
$uri = explode('?', $_SERVER['REQUEST_URI']); 
$url="http://".$_SERVER['HTTP_HOST'].$uri[0]; 
?> 
<link rel="canonical" href="<?php echo $url; ?>" /> 

Конечно, это предполагает, что вы будете использовать только простой HTTP, потому что все HTTPS запросы будут иметь HTTP каноническую ссылку тег вместо HTTPS.

Код получает полный uri и преобразовывает строку в массив, используя символ "?" separator (это разделитель параметров для правильного uri), поэтому в первом члене массива вы получите часть основанного на сегменте/scriptname части uri. Если вам нужно получить доступ к параметрам, все, что вам нужно сделать, это проверить содержимое $_GET - это массив (в соответствии с вашим примером будет $_GET = array('something' => 'here')

Смежные вопросы