我想重写网址:
Y = array([[3, 1, 4, 5], [0, 3, 0, 3], [1, 2, 3, 4])
到
/Files/ANYFILENAMEHERE?token=ANYTOKENHERE
为此我在/do_download.php?file=ANYFILENAMEHERE&token=ANYTOKENHERE
中使用以下规则:
.htaccess
但是,URL不会被重写。它只返回RewriteEngine On
RewriteRule ^Files\/([^\?]+)\?token=([a-z0-9]+)$ do_download.php?file=$1&token=$2 [L]
错误。
在404
模式下的 Regex101 ,但由于某种原因它匹配。
为什么会这样,我该如何解决这个问题?我在某个地方犯了一个愚蠢的错误吗?
我的Apache版本是PCRE
btw。
答案 0 :(得分:0)
您无法在重写规则中匹配查询字符串。
请改为尝试:
RewriteCond %{QUERY_STRING} token=([^&]+)(&|$)
RewriteRule ^Files/(.+) /do_download.php?file=$1&token=%1
这里重写条件在重写规则处理文件名时查询查询字符串中的标记。
在这里演示:http://htaccess.mwl.be?share=fa3b4b46-b0c9-5406-a25b-605ca687d8bd