【问题标题】:Htaccess for pagination php用于分页 php 的 Htaccess
【发布时间】:2025-12-11 14:55:02
【问题描述】:

我正在制作分页。 在 url 中,我可以有语言选项、类别名称和页面 ID。 我想重写这个网址:

http://test.com/beverages.php?lang=en&category=categoryName&page=1

到这里:

http://test.com/en/beverages/category_name/page/1

但我有两种语言选择

我已经尝试过了,但它正在工作:

RewriteRule ^(en|ru)/beverages/([a-zA-Z0-9-/]+)/([0-9-]+)?$ Drinks.php?lang=$1&category=$2&page =$3

请帮帮我

【问题讨论】:

  • 您不允许在类别名称中使用下划线 (_)(因此 category_name 将不匹配)并且您没有考虑到单词 page 在你的正则表达式中
  • @CD001 而不是 category_name 应该是名称
  • 重写规则通常将第一个参数重写为第二个。从您的要求来看,您似乎写错了,还是我误解了您想要做什么?

标签: php .htaccess


【解决方案1】:

你有几个问题:

1) 正则表达式本身 - 模式与您的 URL 不匹配 - try this:

^(en|ru)/beverages/([\w-]+)/page/(\d+)/?$

基本上你没有在你的模式中考虑下划线或单词“page”

2) 您可能希望将重定向放到文档根目录,否则可能会从您的 当前 URL 进行重写,因此:

/beverages.php?lang=$1&category=$2&page=$3


这应该给你以下:

RewriteRule ^(en|ru)/beverages/([\w-]+)/page/(\d+)/?$ /beverages.php?lang=$1&category=$2&page=$3

【讨论】:

  • @rapprogtrainsite - .htaccess 文件在文档根目录中?地址栏中的 URL 类似于 /en/beverages/gin/page/3? ... beverages.php 也在 docroot 中? ...并且不会产生任何错误。
  • 在其他页面上,只有语言选项一切正常,但在此页面中不起作用,是的 url 是:/en/beverages/gin/page/1
  • @rapprogtrainsite - 我的正则表达式有一个小错误;忘记了在 .htaccess 中你不想要模式中的前导 /,现在试试吧。
  • 现在它正在工作,但是当我转到没有类别的页面的 url 时它不起作用,你能帮我吗?请
  • 这取决于 URL 的其余部分是否保持不变 - 只是让类别可选就足够简单了:^(en|ru)/beverages/(?:([\w-]+)/)?page/(\d+)/?$