CodeIgniter PHP:如何仅在 URL 段实际存在时回显该段

CodeIgniter PHP: how to echo a URL segment only if that segment actually exists

好吧,我已经尝试弄清楚这个问题 3 天了,但我似乎无法弄清楚。我试图有条件地回显 URL 段(页码),仅当该段确实存在于特定网页时。具体来说,我正在处理 header 模板中的规范标签。


背景:

我当前的代码会根据需要回显分页目录页面,如下所示:

 https://www.example.com/subjects/apples/2
 https://www.example.com/subjects/apples/3
 https://www.example.com/subjects/apples/4
 etc.

它回显不需要的目录主页,如下所示:

 https://www.example.com/subjects/apples/


必须保持不变的内容:

分页目录 URL 不以正斜杠结尾,这很好。


必须更改的内容:

目录主页确实以正斜杠结尾,这是不好的。


现有代码:

<link rel="canonical" href="<?php echo $this->config->item("base_url");?><?php echo $category_in_url;?>/<?php echo $this->uri->segment(2);?>" />


期望的结果:

目录主页不得以正斜杠结尾。要停止在目录主页末尾留下孤立的正斜杠 URLs,您的新代码将回显

/<?php echo $this->uri->segment(2);?>

如果特定网页确实存在段 2(即页码 2+)。第 0 页和第 1 页在 URL 中没有页码。所以,从第 2 页开始,我需要重复那部分。分页目录页面应如下所示:

https://www.example.com/subjects/apples/4

目录主页应如下所示:

https://www.example.com/subjects/apples


注意:您的解决方案必须在不破坏 PHP 的情况下使用我现有的代码。

提前感谢您的much-appreciated帮助!

杰森

<link rel="canonical" href="<?php echo $this->config->item("base_url");?><?php echo $category_in_url.((int)$this->uri->segment(2,0) > 1 ? '/'.$this->uri->segment(2) : '');?>" />