Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex URL中的htaccess和符号_Regex_.htaccess_Url_Url Rewriting - Fatal编程技术网

Regex URL中的htaccess和符号

Regex URL中的htaccess和符号,regex,.htaccess,url,url-rewriting,Regex,.htaccess,Url,Url Rewriting,我有一个表格,每行代表一页。列标题包含页面名称。加载页面时,原始url如下所示:www.mysite.com/?q=france,然后我快速查找数据库,其中title='france',就是这样。我现在使用htaccess使url更友好。像这样:RewriteRule^([a-zA-Z0-9%@\s\(\)\[\]\-]+)$page.php?q=$1,所以我可以使用www.mysite.com/france。我的问题是当标题有一个符号时,比如“一和二”。查找失败。我试过了 将\&添加到htac

我有一个表格,每行代表一页。列
标题
包含页面名称。加载页面时,原始url如下所示:
www.mysite.com/?q=france
,然后我快速查找数据库
,其中title='france'
,就是这样。我现在使用htaccess使url更友好。像这样:
RewriteRule^([a-zA-Z0-9%@\s\(\)\[\]\-]+)$page.php?q=$1
,所以我可以使用
www.mysite.com/france
。我的问题是当标题有一个符号时,比如“一和二”。查找失败。我试过了

  • \&
    添加到htaccess,以及
  • www.mysite.com/one%26 two
  • 尽管
    www.mysite.com/?q=1%26两个
    都可以工作,但这两种方法都失败了

    有什么方法可以让我用“干净”的URL来处理这个问题吗

    蒂亚

    有两件事:

  • URI在进行mod_rewrite之前被解码,所以您不想与
    %26
    匹配,只想与
    &
    匹配
  • 现在需要将
    &
    重新编码回
    %26
    ,因为它被放在查询字符串中,所以需要使用
    B
    标志。比如说:

    # Add a "&"----------------v
    RewriteRule ^([a-zA-Z0-9#%@&\s\(\)\[\]\-]+)$ page.php?q=$1 [L,B]
    #                     Include the "B" flag -------------------^
    

  • 虽然我得到了答案,但我很好奇为什么这个问题被认为是离题的。我看了下面链接的常见问题,这个问题似乎在范围之内。如果有人告诉我问题出在哪里,我会很高兴地重写它…我看不出这怎么可能是离题的…@WouterJ让你的朋友知道:-)Phil我已经将它标记为“重新打开”,但我看到其他人将它标记为关闭。。。()你可以在meta.stackoverflow.com上创建一个问题,看看“硬核SO会员和MOD”是怎么想的。