.htaccess 如何在htaccess中添加分页?

pgx2nnw8  于 2023-10-23  发布在  其他
关注(0)|答案(2)|浏览(130)

谁能帮帮忙。
我在htaccess中有这个:

RewriteRule ^(.*):(.*)$ /cat.php?s=$1 [L]

示例:site.com/id:category-name
代码基本上可以
我有这个用来分页

RewriteRule ^(.*):(.*)&page=(.*)$ /cat.php?s=$1&page=$2 [L]

示例:site.com/id:category-name&page=
我想使用此代码的分页,但它不工作时,它是RewriteRule ^(.*)&page=(.*)$ /cat.php?s=$1&page=$2 [L]的例子:site.com/id&page=1工程没有问题
但我希望它是site.com/id:categoryname&page=为什么代码不工作?
怎么会这样呢?示例:site.com/id:category-name&page=

68de4m5k

68de4m5k1#

问题是在.htaccess中,你不能直接在RewriteRule中捕获查询参数(?key=value)。相反,你应该使用RewriteCond来检查查询字符串。
这里有一个解决方案来实现你想要的:

# For category with pagination
RewriteCond %{QUERY_STRING} ^page=(\d+)$
RewriteRule ^([^:]+):([^/]+)$ /cat.php?s=$1&page=%1 [END]

# For category without pagination
RewriteRule ^([^:]+):([^/]+)$ /cat.php?s=$1 [END]

请记住,这将适用于apache v.2.4。在以前的版本中使用[L]而不是[END](因为END不可用),并且您需要确保后续规则不会干扰。
希望这对你有帮助!

aurhwmvo

aurhwmvo2#

我发现我的错误在哪里:)在文件本身(cat.php)我忘了添加到请求来验证页面"OR name='$categoryname'"
我把它修好了(htaccess)

RewriteRule ^(.*):(.*)$ /cat.php?s=$1&n=$2 [L]
RewriteRule ^(.*):(.*)?page=(.*)$ /cat.php?s=$1&n=$2&page=$3 [L]

例如:site.com/id:categoryname&page=2
现在它的工作:)谢谢你的帮助!

相关问题