【问题标题】:How to allow 1-9 a-z A-Z - _ % in url via htaccess?如何通过 htaccess 在 url 中允许 1-9 a-z A-Z - _ %?
【发布时间】:2016-12-22 07:44:10
【问题描述】:

我想允许在 url (1-9 , a-z, A-z, -, _ , %)

我在 htaccess 中有以下代码

RewriteRule ^shop/search/([a-zA-Z0-9_-]+)/?$  shop.php?search=$1 [QSA,NC]

问题:在 url 中传递空间时 示例

domain.com/shop/search/my%20keyword

它不工作

基本上我想通过 htaccess 在 url 中允许 % 怎么做?

【问题讨论】:

    标签: php regex .htaccess


    【解决方案1】:

    基本上我想通过 htaccess 在 url 中允许 % 怎么做?

    您可以将此重写规则与否定字符类一起使用:

    RewriteRule ^shop/search/([^/]+)/?$  shop.php?search=$1 [QSA,NC,L]
    

    [^/]+ 将匹配 1 个或多个不是 / 的任何字符,因此它将匹配空格或您想要匹配的任何其他解码字符。

    【讨论】:

      【解决方案2】:

      ...它与请求的 (%-decoded) URL-path 匹配...

      source,强调我的。

      mod_rewrite 永远看不到 %,它将%20 解码为空格。如果您想在 URL 中接受 %20,请在字符类中添加空格。

      【讨论】:

      • 我认为可能是这种情况,不错的主要来源。
      猜你喜欢
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多