我在 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 状态
如我所见,原因是在我的 .htaccess
中重定向到 index.php
那么我怎样才能得到现有文件的正确状态呢?
最佳答案
由于您的 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]
如果请求方法是 HEAD
,RewriteCond %{REQUEST_METHOD} !HEAD
将跳过您的前端 Controller 规则。
关于javascript - 当 .htaccess 重定向到 index.php 时,如果文件存在则检查纯 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50115500/