3

我想要做的是如果我有重复的名称路由,我只使用一个路由而不是使用 3 个路由,但我不确定我需要使用什么正则表达式,有什么建议吗?

现在我有这个

product_test_1.html
product_test_2.html
product_test_3.html

我的代码点火器路线

$route['product_test_1.html'] = "website/product";
$route['product_test_2.html'] = "website/product";
$route['product_test_3.html'] = "website/product";

我想要的东西(但它不起作用)

$route['/product_test/i'] = "website/product";

有什么想法可以解决我的问题吗?谢谢

4

1 回答 1

3

尝试这个:

$route['product_test_[0-9]+\.html'] = 'website/product';

这是具体的,你可以得到。[0-9]表示任何数字(也可以是\d),表示+前面标记的 1 个或多个(数字)。

如果您只想捕获任何内容,则.标记是“任何字符”,因此您可以替换[0-9]+.+,这意味着它将匹配(几乎)任何 1 或更长的字符的字符串。

这会为同一页面创建重复的 url,这通常是不可取的,但也许您特别想要这样。如果没有,您可以考虑通过 301 重定向.htaccess

如果这是您想要的,您也可以将 ID 传递给函数。

$route['product_test_([0-9]+)\.html'] = 'website/product/$1';

括号捕获数字并将其传递给 URL,$1因为它是捕获的第一个捕获匹配项。

然后,在您的website控制器中,您可以这样声明您的product方法:

function product($id)

并且$id将自动成为我们在 URL 中传递的 ID,取自product_test_#.html

于 2012-10-11T03:52:36.763 回答