.htaccess 重写文件匹配的内存(如果目录不存在)



我有点沮丧,所以任何帮助都将不胜感激。是否可以捕获找不到的404/目录,以及.htaccess中的FilesMatch块?

我创建了以下.htacce,以便将不存在的.json文件重写为204 No Content(防止使用$.getJSON时出错(:

<FilesMatch ".(json)$">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^ - [R=204]
</FilesMatch>

我用以下文件/目录结构测试了一些东西:

httpdocs
- a
- a.json
- b

当我请求不存在的配置文件(b/b.json(时,.htaccess有效,但当我尝试加载不存在目录(c/c.json(的配置文件时,将返回404 statusCode,而不是所需的204。

请求a/a.json会给httpStatusCode 200(已找到,这是正确的(

请求b/b.json会给出httpStatusCode 204(无内容,也正确,由.htaccess处理(

请求c/c.json会给出httpStatusCode 404(未找到(

我希望请求c也返回一个204无内容。我尝试过一些方法,比如使用<FilesMatch .*/(.*).(json)$>从请求中捕获目录,并使用$1代替%{REQUEST_FILENAME}作为-d,但这不起作用。

我还尝试使用ErrorDocument捕获404错误,仅针对.json文件,但这无法正常工作。重定向将不起作用,并且将返回404状态代码。

<FilesMatch ".(json)$">
ErrorDocument 404 /204.php
</FilesMatch>

我做错了什么?有什么办法抓住这个吗?

这里不需要使用FilesMatch,只需在RweriteRule本身中直接限制它适用于哪些URL即可。

RewriteRule .json$ - [R=204]

相关内容

  • 没有找到相关文章

最新更新