.htaccess:RewriteRule模式匹配

时间:2013-10-28 00:36:00

标签: .htaccess mod-rewrite

我正在使用mod_rewrite重写我的链接,如下所示。我定义了从/test/1234_5678_.../test.php?id=1234的重定向,如下所示:

RewriteRule test/(.*)_(.*)$ test.php?id=$1

完美地运作。现在,我想将以下重定向添加到/test/1234_5678_.../print/test.php?id=1234&print。因此,我在上面的一行之前添加了以下行。重定向不起作用,似乎只有第二个规则适用。我是否在模式匹配方面做错了什么?问题是可以有多个下划线而我只在模式中使用过一个吗?

RewriteRule test/(.*)_(.*)/print$ test.php?id=$1&print
RewriteRule test/(.*)_(.*)$ test.php?id=$1

1 个答案:

答案 0 :(得分:1)

这两个规则对我来说都很合适,但您可能希望将第一个分组更改为([0-9]+)([^_]+),将第二个分组更改为[^/]+,并添加一些L } flags:

RewriteRule test/([^_]+)_([^/]+)/print$ test.php?id=$1&print [L]
RewriteRule test/([^_]+)_([^/]+)$ test.php?id=$1 [L]