【问题标题】:.htaccess rewrite rule - can't fetch second parameter.htaccess 重写规则 - 无法获取第二个参数
【发布时间】:2012-11-20 06:27:47
【问题描述】:

我刚刚开始使用 .htaccess 以使我的 URL 看起来不错。

下面的第一个重写器运行良好:example.com/user/100 调用 example.com/index.php?p=profile&user=100 就像它应该的那样。

然而,第二个并没有按照我想要的方式工作。由于某种原因,我无法获取 $2 参数。我希望 example.com/discussion/1873/iehf8383 重定向到 example.com/index.php?p=discussion&id=1873&token=iehf8383

这是.htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^user/(\d+)*$ ./index.php?p=profile&user=$1
RewriteRule ^discussion/(\d+)/(\d+)*$ ./index.php?p=discussion&id=$1&token=$2

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    由于\d 匹配一个数字,您的示例将不匹配第二条规则。试试这个:

    RewriteRule ^quiz/(\d+)/([\w\d]+) ./index.php?p=discussion&id=$1&token=$2
    

    这将允许您的令牌包含任何字母数字字符,而不是仅限于数字。

    【讨论】:

    • 非常感谢您的回答,但我仍然收到 404。我的令牌可以包含 0-9 a-z A-Z。你的规则允许大写吗?有些东西还是很奇怪,不知道是什么。
    • 您介意发布您的解决方案吗?如果不正确,我可以更新我的答案(想确保这里的内容有用)。
    • 是我搞砸了其他事情,您的回答完全正确,它解决了我的问题。 :)
    【解决方案2】:

    改变:

    RewriteRule ^quiz/(\d+)/(\d+)*$ ./index.php?p=discussion&id=$1&token=$2
    

    收件人:

    RewriteRule ^quiz/(\d+)/([^/]+)$ index.php?p=discussion&id=$1&token=$2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 2013-12-26
      • 2023-04-02
      相关资源
      最近更新 更多