我设计了一个网站,它工作正常,但最近我修改了链接用于搜索引擎优化目的。我刚刚将_
替换为-
。现在我找到了一条未找到路线的错误。
这是匹配的数组
$routes = array(
array('url' => '/^products\/(?P<cat>\w+)$/', 'controller' => 'products', 'view' => 'products_list')
);
链接就像这样
当我删除-
或将其替换为_
时,它可以正常工作。
答案 0 :(得分:1)
将正则表达式从速记字符类\w
(与字母,数字和下划线匹配)更改为更明确的正则表达式,以匹配大写和小写字母,数字_
和{{ 1}}。
-
答案 1 :(得分:0)
您也可以将\ w留在那里,但是明确地添加 - 即
$routes = array(
array('url' => '/^products\/(?P<cat>[\w\-]+)$/', 'controller' => 'products', 'view' => 'products_list')
);
答案 2 :(得分:0)
答案 3 :(得分:0)
朋友们,我发现了另一种解析网址的方法。使用此功能,您可以在网址末尾添加“.html”,以便搜索引擎友好。
.htaccess文件
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
url解析代码
$url = isset($_GET['url']) ? $_GET['url'] : null;
$url = str_replace(".html", "", $url);
$url = str_replace("-", "_", $url);
//you could use rtrim(); but I had some trouble when the url had the "t" as the ending character.
//$url = rtrim($url, '.html');
$url = explode('/', $url);