Php Regex:删除用于规范标签的url部分

时间:2016-09-05 18:10:10

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

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

我的标题是动态的,规范网址目前设置为

<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 / +时,指向其父目录的数字

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

$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;

我确定我必须使用如果条件,但我在正则表达式中表现不佳。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

如果您想通过重定向规则进行重定向,则需要了解您的服务器运行情况。

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