我正在使用.htaccess将用户重定向到我的主 Controller ,并且工作正常。但是当我调用一个不存在的js文件时:

<script src="/js/jquery1231231312.js"></script>

而不只是说404-文件不存在,此js文件正在获取index.php的内容。我应该如何进行?

这是我的.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

最佳答案

好了,设置的方式,所有内容都通过index.php进行路由。如果请求的资源不存在,则会通过index.php进行路由。取决于index.php来实现一些不存在的错误,并返回404错误,但是我猜测它已经设置好了,以便如果url=不存在,则返回主页。

您可以更改规则以忽略某些文件的路由,例如您的示例:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/js/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

这将使/js目录中的任何内容都无法通过index.php进行路由,因此,如果有人在/js目录中请求不存在的文件,则他们只会得到常规的404响应。

编辑:



如果要忽略所有图像,javascript和css,则第二行应为:
RewriteCond %{REQUEST_URI} !\.(png|jpe?g|gif|css|js)$ [NC]

关于apache - 文件不存在时的.htaccess重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12100334/

10-13 01:29