我尝试仅为主页创建规范标记,但由于我使用通用调用,他会显示任何网址,即使我们位于主页但网址不同。
实施例
在此网址中: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; ?>" />
代码中缺少某些东西,只删除特定的查询或单词。这可能吗?
答案 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')