【问题标题】:URL Rewriting htaccess Rules - ApacheURL 重写 htaccess 规则 - Apache
【发布时间】:2017-09-20 12:24:43
【问题描述】:

我正在尝试创建一个 REST API,它将接受多个参数作为分段 url

这是我当前的重写规则,它工作正常,但只处理一个分段变量。这里只有一个项目类别 id 进入分段。

     ^products/categories/([0-9]+)/?$ products.php?category_id=$1 [NC,L]
     products/categories/?category_id=10

我想要做的是,我将传递一些其他的 id,比如 brand_id 和 color id 作为这样的分段 url

    ^products/categories/([0-9]+)/([0-9]*)/([0-9]*)?$ products.php?category_id=$1 [NC,L] 

并期望 url 像下面这样重写

    products/categories/?category_id=10&brand_id=5&color_id=7.

当且仅当我提供了所有 3 个 id 并且如果我错过任何一个 id 时,上述重写工作正常。在我的情况下,请求中只有类别 ID 是强制性的,所有其他项目都是可选的。如何更改此处的重写 url 以使第二个和第三个变量成为可选项?

谢谢

【问题讨论】:

  • 你基本上在那里 - 假设品牌和颜色的顺序总是一致的 - 你只需要使正斜杠可选 - 例如:^products/categories/([0-9]+)/?([0-9]*)/?([0-9]*)/?$ products.php?category_id=$1&brand_id=$2&color_id=$3
  • 是的..它工作。谢谢CD001。甚至我也在寻找一个可以使第二个和第三个参数可选的规则。

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


【解决方案1】:

看下面的例子

您的网址 http://test.com/products/categories/10/5/7

HTACCESS

RewriteRule ^products/categories/([0-9]+)/([0-9])/([0-9])?$ index.php?category_id=$1&brand_id =$2&color_id=$3 [L,QSA]

你可以得到所有三个参数

如果您想为参数创建动态规则,请查看下方

对于单个参数(category_id)

RewriteRule ^products/categories/([0-9]+)?$ index.php?category_id=$1 [L,QSA]

对于两个参数(category_id 和brand_id)

RewriteRule ^products/categories/([0-9]+)/([0-9]*)?$ index.php?category_id=$1&brand_id=$2 [L,QSA]

对于三个参数(category_id、brand_id 和 color_id)

RewriteRule ^products/categories/([0-9]+)/([0-9])/([0-9])?$ index.php?category_id=$1&brand_id =$2&color_id=$3 [L,QSA]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2011-12-06
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多