我有两个重写规则,这就是我想要实现的目标
用户链接 - >内部链接
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中,当我打印出查询字符串时,唯一存在的变量是代码。我需要页码以及第二条规则。
修改 如果其他人有这个问题,这可能会有所帮助:问号(?)是问题所在,如果我使用不同的字符,它可以工作,我得到两个变量。如果您不关心问号,这可能是一个解决方案。要保留问号,请使用已接受的答案进行解决。
答案 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]