【问题标题】:'+' symbol in htaccesshtaccess 中的“+”符号
【发布时间】:2009-11-17 02:07:47
【问题描述】:

我正在使用 htaccess。我尝试在 url 中传递一个值,例如“C++”。

点赞“http://domain.com/Details/c++/detail.html

我正在检索 htaccess 中的值,例如

RewriteRule ^Details/([a-zA-Z_0-9_.,'&/-]+)/(([a-zA-Z_0-9_.,'&/-]+).html)$ index .php?page=$2&id=$1

但它只返回'c'。不接受符号“+”。我需要值'c++'。

有什么解决办法吗?

【问题讨论】:

  • 您在哪里以及如何尝试传递该值?
  • 我已经编辑了这个问题。我正在检索值 $id
  • 重新标记,这不是php问题

标签: .htaccess url-rewriting


【解决方案1】:

尝试对 + 字符进行 URL 编码。

http://domain.com/Details/c%25%25/detail.html

【讨论】:

  • 问题是,在 URL 中,+ 是空格的编码。你可以用 g. 的方法绕过这个。
  • 我需要在 .htaccess 文件中这样做吗?
  • %20 是空格的编码。
【解决方案2】:

是否有可能逃脱它,例如http://domain.com/Details/c%25%25/detail.html。 (我只是猜测)

【讨论】:

    【解决方案3】:

    http://domain.com/Details/c%2B%2B/detail.html

    【讨论】:

      【解决方案4】:

      一个小小的安慰是:你并不孤单。由于这个问题是在 URI 中设计的,所以像 Google 这样的大型网站都会遇到问题:

      http://www.google.com/search?q=c++

      这只会搜索“c”。

      【讨论】:

        【解决方案5】:

        试试B flag:

        RewriteRule ^Details/([a-zA-Z0-9_.,'&/-]+)/([a-zA-Z0-9_.,'&/-]+\.html)$ index.php?page=$2&id=$1 [B]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-06-21
          • 1970-01-01
          • 2014-02-15
          • 2018-12-01
          • 2012-05-14
          • 2012-01-16
          • 2013-10-14
          相关资源
          最近更新 更多