【问题标题】:Remove "-" from apache rewrite parameter从 apache 重写参数中删除“-”
【发布时间】:2013-01-24 20:56:12
【问题描述】:

我正在使用 mod_rewrite 并希望这样做:

RewriteRule ^item/([0-9]*)-(.*)-(.*)$ pages/page_item.php?id=$1-&name=$2-&firstname=$3 [QSA,L]

变成这样

item/25-Foo-Bar

但是当我通过 PHP var_dump $_get 参数时,我得到了这个:

array (size=3)
  'id' => string '25-' (length=4)
  'prenom' => string 'Foo-' (length=4)
  'nom' => string 'Bar' (length=7)

前 2 个参数包含“-”字符。 如何避免这种情况? 感谢您的帮助

【问题讨论】:

    标签: apache mod-rewrite get


    【解决方案1】:

    它包含-,因为您明确将其置于重写中:

    RewriteRule ^item/([0-9]*)-(.*)-(.*)$ pages/page_item.php?id=$1-&name=$2-&firstname=$3 [QSA,L]
    #--------------------------------------------------------------^--------^---
    

    删除那些,你会得到你期望的结果。

    你可以改进你的正则表达式。我建议不要使用贪婪的(.*),而是使用([^-]+)。表达式[^-]+ 表示匹配直到但不包括下一个- 的所有字符。

    所以你的最终结果是这样的:

    RewriteRule ^item/([0-9]*)-([^-]+)-(.*)$ pages/page_item.php?id=$1&name=$2&firstname=$3 [QSA,L]
    

    【讨论】:

    • 哦,那是我犯的一个愚蠢的错误,感谢老兄的清晰快速的回答:)
    猜你喜欢
    • 1970-01-01
    • 2021-02-05
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多