Apache RewriteRule正则表达式未按预期工作

Apache RewriteRule正则表达式未按预期工作,apache,.htaccess,mod-rewrite,pcre,apache2.2,Apache,.htaccess,Mod Rewrite,Pcre,Apache2.2,我想重写URL: /Files/ANYFILENAMEHERE?token=ANYTOKENHERE 到 为此,我在我的.htaccess中使用以下规则: RewriteEngine On RewriteRule ^Files\/([^\?]+)\?token=([a-z0-9]+)$ do_download.php?file=$1&token=$2 [L] 但是,URL不会被重写。它只返回一个404错误。 在PCRE模式下打开,但由于某些原因,它匹配 这是为什么?我该如何解决?我在

我想重写URL:

/Files/ANYFILENAMEHERE?token=ANYTOKENHERE

为此,我在我的
.htaccess
中使用以下规则:

RewriteEngine On
RewriteRule ^Files\/([^\?]+)\?token=([a-z0-9]+)$ do_download.php?file=$1&token=$2 [L]
但是,URL不会被重写。它只返回一个
404
错误。 在
PCRE
模式下打开,但由于某些原因,它匹配

这是为什么?我该如何解决?我在什么地方犯了愚蠢的错误吗


我的Apache版本是
2.2.31(Unix)
btw.

您无法在重写规则中匹配查询字符串

请尝试以下方法:

RewriteCond %{QUERY_STRING} token=([^&]+)(&|$)
RewriteRule ^Files/(.+) /do_download.php?file=$1&token=%1
这里,重写条件在查询字符串中查找标记,而重写规则处理文件名

此处演示:

RewriteCond %{QUERY_STRING} token=([^&]+)(&|$)
RewriteRule ^Files/(.+) /do_download.php?file=$1&token=%1