从php echo url调用中删除查询

时间:2014-09-03 17:21:51

标签: php url request echo

我尝试仅为主页创建规范标记,但由于我使用通用调用,他会显示任何网址,即使我们位于主页但网址不同。

实施例

在此网址中:http://www.example.com/?something=here,我想在主页上放置规范标记网址而不进行查询。

但如果我在另一个网址(例如/contact.php)中,我希望它显示与/contact.php相同的规范网址。

我使用此代码检索我在网站中的网址:

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

代码中缺少某些东西,只删除特定的查询或单词。这可能吗?

1 个答案:

答案 0 :(得分:0)

没有一个命令/全局可以在没有参数的情况下获得segment / 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并使用&#34;?&#34;转换数组中的字符串。 separator(这是正确uri的params分隔符),因此你最终会得到数组第一个成员中uri的基于段的/ scriptname部分。 如果您需要访问参数,您只需要验证$_GET的内容 - 这是一个数组(根据您的示例,它将是$_GET = array('something' => 'here')