Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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 正则表达式正在删除最后一个字符_Regex_Apache_Mod Rewrite_Clean Urls - Fatal编程技术网

Regex 正则表达式正在删除最后一个字符

Regex 正则表达式正在删除最后一个字符,regex,apache,mod-rewrite,clean-urls,Regex,Apache,Mod Rewrite,Clean Urls,在实现干净的URL时,我想映射http://www.pikspeak.com/iframe/3/bird?autoplay=true至http://www.pikspeak.com/iframe.php?id=3&img=bird&autoplay=true使用以下正则表达式 RewriteRule ^/iframe/([^/\.]+)/([^/\.?]+)\\?([^/\.]+) /iframe.php?id=$1&img=$2&$3 但问题是,imgget参数值的最后一个字

在实现干净的URL时,我想映射
http://www.pikspeak.com/iframe/3/bird?autoplay=true
http://www.pikspeak.com/iframe.php?id=3&img=bird&autoplay=true
使用以下正则表达式

RewriteRule ^/iframe/([^/\.]+)/([^/\.?]+)\\?([^/\.]+) /iframe.php?id=$1&img=$2&$3
但问题是,
img
get参数值的最后一个字符(在此“bird”中)被删除,即“bir”。 你能帮我解决这个问题吗

除此之外,我也无法在php中获取“autoplay”参数

提前谢谢

  • 我认为你所说的
    \\?
    实际上是指
    \?
  • 无需在字符类中转义
    \。
  • 使用
    [QSA]
    修饰符,而不是尝试匹配查询字符串

  • 重写规则^/iframe/([^/]+)/([^/]+)$/iframe.php?id=$1&img=$2[QSA]1。不,它是“\\?”,而不是2中解释的“\?”。好的,我将尝试删除\。但是我不确定它是否有效。我也将尝试[QSA]。不,是
    \?
    。这个问题是
    \\?
    ,因为正如您在注释中看到的,一个用于正则表达式,另一个用于字符串声明,这不适用于
    重写规则。到目前为止,您已经匹配了一个可选的反斜杠,这就是为什么
    bird
    中的
    d
    得到的回溯捕获为
    $3
    ,而不是您预期的查询字符串。更重要的是,查询字符串不是
    RewriteRule
    的一部分。仅使用
    \?
    有一些解析问题,并且它不会重写一行,因此我使用了
    \?
    ,这在一定程度上起到了作用。但是
    [QSA]
    完成了这项工作。谢谢。
    \\?
    只是给人一种工作的错觉,因为
    充当了“0或1”量词,并且默认为“0”。如果你把它全部拿出来,你会得到同样的结果。不管怎么说,很高兴它成功了。快乐编码! RewriteRule ^/iframe/([^/.]+)/([^/.]+)$ /iframe.php?id=$1&img=$2 [QSA]