Htaccess简单重写规则被忽略


htaccess simple rewrite rule being ignored

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

user link ->内部链接

site.com/dir1/dir2/ ab -mypage.php ? page = 3 -> site.com/dir1/dir2/script.php ?代码= ab ,页= 3

cd

site.com/dir1/dir2/ -mypage.php -> site.com/dir1/dir2/script.php ?代码= 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中,当我打印出querystring时,出现的唯一变量是代码。对于第二条规则,我也需要提供页码。

编辑:

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

使用[QSA](代表Query String Append)代替制定2条规则,它将把原始查询字符串附加到修改后的查询字符串:

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

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

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