【问题标题】:Make mod_rewrite pass multiple parameter使 mod_rewrite 传递多个参数
【发布时间】:2018-03-30 23:01:54
【问题描述】:

我想在 php 中编写 url-rewrite 需要使这样的 url store/{stre-name}?offer=10 示例见下文

/stores/mango?offer=10

/stores/apple?offer=10

我已将 .htacess 写为

RewriteRule ^stores/(.*)$ offer.php?c=$1&offer=$2 [L]

在offer.php上写代码为

$c = $_GET['c'];
$offer = $_GET['offer']

我在这里成功获得了c的价值,但我没有在这里获得offer的价值。所以请帮助我如何读取offer.php中offer的价值

RewriteRule ^stores/(.*)$ offer.php?c=$1&offer=$2 [L]

【问题讨论】:

  • 也许:RewriteRule ^stores/([^?]+)\?offer=(.*)$ offer.php?c=$1&offer=$2 [L]
  • @AbraCadaver 这对我不起作用我已经写了 RewriteRule ^stores/(.*)\?offer=(.*)$ offer.php?c=$1&offer=$2 [L] 并得到了找不到错误对象!

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


【解决方案1】:

如果你想用旧的 queryString 将 /store/mango/?offer=10 重写为 /offer.php?c=mango,你需要使用 QSA在您的规则中标记结合了新旧查询字符串

RewriteRule ^store/(.+)/?$ /offer.php?c=$1 [QSA,L]

【讨论】:

    【解决方案2】:

    这对你有用。

          RewriteRule ^store/([^/]*)/([^/]*)$ /offer.php?c=$1&offer=$2 [L]
    

    您也可以尝试使 SEO 友好的 URL

          RewriteRule ^store/([^/]*)?([^/]*)\.html$ /offer.php?c=$1&offer=$2 [L]
    

    【讨论】:

    • 这适用于 url "/stores/apple/?offer=10" 但我想要这样的 url:/stores/apple?offer=10 所以请帮我处理这个 url mod_rewrite
    【解决方案3】:

    这段代码对我有用:

    RewriteRule ^stores/(.*)?([^/]*)$ offer.php?c=$1&offer=$2 [QSA,L]  
    

    对于这个网址:

    /stores/mango?offer=10
    

    【讨论】:

    • @starkeen 是的,我现在已经使用它并且工作正常
    猜你喜欢
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    相关资源
    最近更新 更多