htaccess简单重写规则被忽略

时间:2011-10-14 14:34:58

标签: php apache .htaccess mod-rewrite

我有两个重写规则,这就是我想要实现的目标

用户链接 - >内部链接

site.com/dir1/dir2/ ab -mypage.php?page = 3 - > site.com/dir1/dir2/script.php?code=ab&page=3

site.com/dir1/dir2/ cd -mypage.php - > site.com/dir1/dir2/script.php?code=cd

正如您所看到的,第二个与第一个相同,但具有分页支持。

这是htaccess代码:

RewriteRule ^dir1/dir2/(.*)-mypage.php?page=(.*)$ dir1/dir2/script.php?code=$1&page=$2
RewriteRule ^dir1/dir2/(.*)-mypage.php$ dir1/dir2/script.php?code=$1

分页规则被完全忽略,没有错误。在我的script.php中,当我打印出查询字符串时,唯一存在的变量是代码。我需要页码以及第二条规则。

修改 如果其他人有这个问题,这可能会有所帮助:问号(?)是问题所在,如果我使用不同的字符,它可以工作,我得到两个变量。如果您不关心问号,这可能是一个解决方案。要保留问号,请使用已接受的答案进行解决。

2 个答案:

答案 0 :(得分:3)

使用[QSA](代表查询字符串附加)而不是制定2个规则 - 它会将原始查询字符串附加到修改后的字符串:

RewriteRule ^dir1/dir2/(.*)-mypage.php$ dir1/dir2/script.php?code=$1 [QSA]

答案 1 :(得分:0)

正在忽略查询字符串。您不需要第一条规则,只需使用QSA标志:

RewriteRule ^dir1/dir2/(.*)-mypage.php$ dir1/dir2/script.php?code=$1 [QSA]