Apache RewriteRule正则表达式未按预期工作
我想重写URL: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模式下打开,但由于某些原因,它匹配 这是为什么?我该如何解决?我在
/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