Php 请求返回单斜杠
我使用这部分代码打印Php 请求返回单斜杠,php,Php,我使用这部分代码打印canonical标记: <?php if(!empty($_SERVER["REQUEST_URI"])){ $url = strtok($_SERVER["REQUEST_URI"],'?'); ?> <link rel="canonical" href="https://mywebsite.com<?=urldecode($url);?>" /> <?php } else { ?> <link rel="canon
canonical
标记:
<?php
if(!empty($_SERVER["REQUEST_URI"])){
$url = strtok($_SERVER["REQUEST_URI"],'?');
?>
<link rel="canonical" href="https://mywebsite.com<?=urldecode($url);?>" />
<?php
} else {
?>
<link rel="canonical" href="https://mywebsite.com" />
<?php
}
?>
在HTTP调用中,$\u服务器['REQUEST\u URI']
永远不能为空
,除非脚本本身未设置($\u服务器['REQUEST\u URI'])
或$\u服务器['REQUEST\u URI]='
对于HTTP调用http://mywebsite.com
,它将保存/
作为其值。这就是你得到的/
表示网站的根目录,因此当对网站的根目录发出HTTP请求时,/
将作为路径发送,并且无论您是否将其添加到URL中,它都将始终存在
我认为这澄清了为什么您从未达到代码的else
条件
针对您的问题,如果您希望在不使用任何查询参数的情况下将路径附加到url,那么更好的方法应该是:
<link rel="canonical" href="https://mywebsite.com<?php echo parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); ?>">
如果您正在将任何有效的URL传递给parse_URL
,并且不希望只对根使用尾随斜杠,那么:
<?php
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if($path == '/' || !$path) {
$path = '';
} ?>
<link rel="canonical" href="https://mywebsite.com<?php echo $path; ?>">
是的,谢谢您的解释,但是您的代码不工作,没有任何更改,仍然返回预期的输出。指向和的链接在功能上相同。如果您特别想删除尾部斜杠,请检查更新的答案。
<?php
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if($path == '/' || !$path) {
$path = '';
} ?>
<link rel="canonical" href="https://mywebsite.com<?php echo $path; ?>">