Php htaccess简单重写规则被忽略

Php htaccess简单重写规则被忽略,php,apache,.htaccess,mod-rewrite,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/(.*

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

用户链接->内部链接

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中,当我打印querystring时,唯一存在的变量是code。我还需要第二条规则的页码

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

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

RewriteRule ^dir1/dir2/(.*)-mypage.php$ dir1/dir2/script.php?code=$1 [QSA]
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]
RewriteRule ^dir1/dir2/(.*)-mypage.php$ dir1/dir2/script.php?code=$1 [QSA]

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


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