Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 请求返回单斜杠_Php - Fatal编程技术网

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; ?>">