我有两个重写规则,这就是我想要实现的
user link ->内部链接
site.com/dir1/dir2/ ab -mypage.php ? page = 3 -> site.com/dir1/dir2/script.php ?代码= ab ,页= 3
cdsite.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]