如何针对某个包含空格的 apache 请求返回 404?

问题描述 投票:0回答:1

对于如下所示的网址返回 404 的简单/可靠的方法是什么(使用 .htaccess)?

/foo/my file name.jpg

随着时间的推移,我应该能够阻止 .htaccess 中的更多 url,因此之前对它们进行 url 编码并不容易,那里的文件名可能非常长且复杂。 我认为包含引用文件名的规则/条件会更可靠。

我有这个,它似乎可以工作,但我读到你不能将

404
redirect
一起使用?!

Redirect 404 "/foo/my file name.jpg"

我可以对我的

404.php
做一个RewriteRule,但是像这样引用它不起作用,这应该怎么做?

RewriteRule "/foo/my file name.jpg" 404.php [QSA] 
apache .htaccess redirect url-rewriting http-redirect
1个回答
0
投票

RewriteRule
中,第一个参数是 Perl 兼容的正则表达式。因此,请尝试使用此方法来匹配至少包含一个空白字符的任何内容

RewriteRule ^.*?\s.*$ 404.php [QSA]

^
匹配开头,
.*?
不贪婪地匹配零个或多个字符,
\s
匹配空白字符,
.*
匹配零个或多个字符,
$
匹配结尾。空格字符可以是文件名的第一个字符、中间字符或最后一个字符。

参见https://regex101.com/r/Cznmkp/1

© www.soinside.com 2019 - 2024. All rights reserved.