由于重复内容问题我试图创建一系列正则表达式用于规范标记(在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;
我确定我必须使用如果条件,但我在正则表达式中表现不佳。 提前谢谢。
答案 0 :(得分:1)
此正则表达式适用于car(s)/number
。 /cars?/\d+
这个将匹配您的手机。 /new-phones/\d+
您可以使用php或重定向规则重定向(我会亲自使用它)。
如果您想通过重定向规则进行重定向,则需要了解您的服务器运行情况。
因为你在nginx下运行看看there,但要注意重定向规则需要。确保您使用的是哪种类型的重定向(301等)。