我的目录下存在一些文件,其名称包含问号。 我正在尝试更换 ?与 %3F 但我收到“404 Not Found”错误。 URL 中的数字是动态的。
我有:
https://www.example.com/uploads/10015015**?**afe/filename.doc
我需要什么:
https://www.example.com/uploads/10015015**%3F**afe/filename.doc
这是我在.htaccess中添加的规则,但它不起作用:
RewriteCond %{QUERY_STRING} ^?afe([^&]*)
RewriteRule (.*) /$1%3F%{QUERY_STRING}? [L]
RewriteCond %{QUERY_STRING} ^?afe([^&]*) RewriteCond %{QUERY_STRING} !="" RewriteRule (.*) /$1%3F%{QUERY_STRING}? [L]
QUERY_STRING
服务器变量不包含 ?
。但是,正则表达式 ^?afe([^&]*)
完全无效(?
是量词,^
不可量化),因此这会导致 500 内部服务器错误,因为正则表达式无法编译。
当您已经确定存在与模式匹配的查询字符串(在第一个条件中)时,无需检查查询字符串是否为空(第二个条件)。
尝试以下方法:
RewriteCond %{QUERY_STRING} ^afe/[^&]+\.doc$
RewriteRule (.*) $1\%3F%{QUERY_STRING} [NE,QSD,L]
请注意,
%
之前的3
必须进行反斜杠转义,以避免其被视为数字反向引用(否则将为空)。