当.htaccess重定向到index.php时,检查纯JS是否存在文件

时间:2018-05-01 11:14:00

标签: javascript .htaccess xmlhttprequest

我在PHP上创建了自己的小型CMS,所以在.htaccess我使用重定向到index.php这样

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

现在使用纯JavaScript我需要检查我的服务器上是否存在某些HTML文件,所以我尝试使用

var http = new XMLHttpRequest();
http.open('HEAD', 'http://path/to/myfile.html', false);
http.send();
console.log(http.status);

但无论文件存在或不存在

,我都会得到200状态

我看到原因是我index.php

中的.htaccess重定向

那么如何才能获得正确的文件状态?

1 个答案:

答案 0 :(得分:1)

由于您的Javascript代码使用HEAD方法,因此您可以跳过所有HEAD次请求的.htaccess规则:

RewriteEngine On
RewriteBase /

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_METHOD} !HEAD
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
如果请求方法为RewriteCond %{REQUEST_METHOD} !HEAD

HEAD将跳过您的前端控制器规则。