【问题标题】:How to make Canonicals with PHP如何使用 PHP 制作规范
【发布时间】:2023-03-10 15:21:01
【问题描述】:

我在 SO 上进行了搜索,但找不到满足我需求的确切答案。

生成一个 URL 非常简单......

像这样:

<link rel="canonical" href="https://example.com<?php echo ($_SERVER['REQUEST_URI']); ?>" />

但是,这样做的问题是,$_SERVER['REQUEST_URI']) 将始终获取当前正在使用的文件,因此规范 URL 可能会发生变化。

因此它可以在 www.example.com/hello.php 和 www.example.com/hello/ 之间切换,以及根据用户访问您网站的方式的许多其他变化。

如何使它始终是相同的 url? (最好没有.php)

【问题讨论】:

  • 什么是规范 URL?
  • 为此,您需要通过 Apache 使用 mod 重写。
  • 好吧,在上面的例子中它很容易定义,因为所有的变化都已经被静态地解决了。 example.com/the 没有 .php/ 的网址。我想解决它的方法是获取没有 .php 的 URI。
  • 所以,规范 URL 表示用于获取页面的任何主机名和路径,没有 .php 后缀?
  • 规范可以是你想要的任何东西。但是无论你设置什么,它都不能改变格式。就我而言,我想要 https://example/URI/ 不带 .php。

标签: php seo canonical-link


【解决方案1】:

我自己解决的,很基本:

<?php
$fullurl = ($_SERVER['REQUEST_URI']);
$trimmed = trim($fullurl, ".php");
$canonical = rtrim($trimmed, '/') . '/';
?>

那么……

<link rel="canonical" href="https://example.com<?php echo $canonical ?>" />

我确信有不同的方法,但它对我有用。

【讨论】:

    【解决方案2】:

    这就是我的工作。

    <?php
    
    // get the rigth protocol
    $protocol = !empty($_SERVER['HTTPS']) ? 'https' : 'http';
    
    // simply render canonical base on the current http host ( multiple host ) + requests
    echo $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    
    ?>
    

    【讨论】:

      【解决方案3】:

      我认为您的脚本需要进行一些清理,对吗? 我的意思是,如果你的页面是

      https://example.com/test.php
      

      但一个恶意但无害的人会这样做

      https://example.com/test.php/anotherThing.php
      

      你的规范会变成

      https://example.com/anotherThing.php
      

      不过,您不希望这种情况发生,对吗?特别是如果恶意的人不是无害的,并且对你的网址做了最坏的事情......

      【讨论】:

        【解决方案4】:

        这将删除像?search=abc&amp;page=32这样的查询参数

        $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . strtok($_SERVER['REQUEST_URI'], '?')
        

        【讨论】:

          猜你喜欢
          • 2012-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-02
          • 2011-01-08
          • 2011-05-09
          • 1970-01-01
          • 2023-03-23
          相关资源
          最近更新 更多