【问题标题】:Php Regex: Removing parts of url for canonical tag usePhp Regex:删除部分 url 以供规范标签使用
【发布时间】:2016-09-05 18:10:09
【问题描述】:

由于重复的内容问题,我试图创建一系列正则表达式以用于规范标签(在 php 中)。

我的标题是动态的,并且规范的 url 当前设置为

<link rel="canonical" href="'. BASEHREF . $_SERVER['REQUEST_URI'].'" />

为了更好地展示我试图实现的目标,我将举一些例子。(数字是页码)。 例如

example.com/cars/1,2,etc canonical url points -> example.com (home page)
example.com/car/nissan canonical url points -> example.com (home page)
example.com/new-phones/1,2,3etc  canonical url points -> example.com/new-phones/

所以基本上当 url 包含单词 cars,car + digit 或 word 时,我希望该页面规范 url 指向主页,并且当 url 包含 /new-phones/+a 数字指向其父目录时.

这是我到目前为止的代码,它只是从规范 url 中删除页码。

$url = BASEHREF.$_SERVER['REQUEST_URI'];

$parts = parse_url($url);
$scheme = $parts['scheme'];
$host = $parts['host'];
$path = $parts['path'];

$items = preg_split('/\//',$path,null,PREG_SPLIT_NO_EMPTY);

$thepage = $items[0];
$pagenumber = $items[1];
$canonical_url = ($pagenumber = '') ? $url : $scheme.'://'.$host.'/'.$thepage;

我确定我必须使用 if 条件,但我不擅长正则表达式。 提前致谢。

【问题讨论】:

    标签: php regex preg-replace preg-match preg-split


    【解决方案1】:

    此正则表达式适用于 car(s)/number/cars?/\d+

    这一款将与您的手机匹配。 /new-phones/\d+

    您可以使用 php 或重定向规则进行重定向(我会亲自使用它)。

    如果你想通过重定向规则进行重定向,你需要知道你的服务器在什么环境下运行。

    由于您在 nginx 下运行,请查看 there,但请注意需要重定向规则。确定您使用的是哪种类型的重定向(301 等)。

    【讨论】:

    • 我运行 nginx 服务器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    相关资源
    最近更新 更多