6

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

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

这个 js 文件不仅仅是说 404 - 文件不存在,而是获取 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>
4

1 回答 1

9

好吧,按照您设置的方式,所有内容都通过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 响应。


编辑:

这就是我想要的,忽略某些文件(js、css、图像)的路由,因为如果文件不存在,我会得到正常错误!

如果您想忽略所有图像、javascript 和 css,那么第二行应该是:

RewriteCond %{REQUEST_URI} !\.(png|jpe?g|gif|css|js)$ [NC]
于 2012-08-23T21:48:05.543 回答