【问题标题】:.htaccess rewrite for category with pagination.htaccess 用分页重写类别
【发布时间】:2021-03-14 12:12:45
【问题描述】:

我正在尝试编写一个 mod-rewrite 规则来处理我网站上的分页链接。

我希望我的 URL 结构是 https://example.com/category.php?name=category-linkhttps://example.com/category/category-link [无分页]

https://example.com/category.php?name=category-link&page=2https://example.com/category/category-link/2 [带分页]

我尝试了以下方法:

RewriteRule ^category/([0-9a-zA-Z-]+)/([0-9]+) category.php?name=$1&page=$2

https://example.com/category/category-link 不工作

https://example.com/category/category-link/1 正在工作

2。我可以将localhost/article/4/ 重定向到localhost/article/4 [这里 4 是一个 id]

任何指导将不胜感激。

【问题讨论】:

  • 当然/category/category-link 不适用于 that 规则,因为模式 要求 之后有一个额外的斜线,然后至少一位数。
  • 这里有什么问题?您已经为分页创建了一条规则(可以说是更复杂的一条)。现在您需要另一个(类似的)非分页链接规则。您不一定需要单个规则(否则您将总是在结果中获得page URL 参数)。

标签: apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

您能否尝试以下操作,仅基于您显示的示例。请确保在将这些规则放入您的 htaccess 文件后清除浏览器缓存。

RewriteEngine ON
RewriteCond %{REQUEST_URI} ^/category/([0-9a-zA-Z-]+)/?$ [NC]
RewriteRule ^(.*)$ category.php?name=%1 [L]

RewriteRule ^category/([0-9a-zA-Z-]+)/([0-9]+)/? category.php?name=$1&page=$2 [L]

或者你也可以在没有RewriteCond 的情况下使用它。请确保您将其中任何一个都放入。

RewriteEngine ON
RewriteRule ^category/([0-9a-zA-Z-]+)/?$ category.php?name=$1 [L]
RewriteRule ^category/([0-9a-zA-Z-]+)/([0-9]+)/? category.php?name=$1&page=$2 [L]

【讨论】:

  • @AlSayeed,欢迎您,在这个学习欢呼的伟大论坛上继续分享和学习 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 2020-07-09
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多