Apache .htaccess排除要重写的目录

Apache .htaccess排除要重写的目录,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我在这个htaccess中错了,因为/assets/folder并没有被排除在重写规则之外。 当我访问时:返回404不是我所期望的 Options -Indexes RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^/?(assets|css)/ RewriteRule . index.php 谢谢您的规则

我在这个htaccess中错了,因为/assets/folder并没有被排除在重写规则之外。 当我访问时:返回404不是我所期望的

Options -Indexes
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} !^/?(assets|css)/
RewriteRule . index.php
谢谢

您的规则是:

在以下情况下,将所有内容重写为index.php:

URL不是文件,也不是目录,不在
/assets/
/css/

您请求的文件不是文件,也不是目录,并且位于
资产/
中:

所以这条规则没问题,但是!您的日志显示您正在请求
/home/valentin/public\u html/404.shtml
(未知对象的自动重定向!)

这个请求再次通过了规则

它不是一个文件(!-f匹配),也不是一个目录(!-d匹配),它既不在
assets/
中,也不在
css/
中,然后被重写到index.php

Q.E.D


您可以通过将404.shtml放入您的
public\u html/
文件夹来纠正此问题,或者在apache配置中将其更改为真实文件。

谢谢您的回答,我在文件夹中添加了404.shtml,然后我得到了相同的结果。404浏览器不是cusom浏览器吗?请参阅新日志我认为404.shtml在apache配置中的某个地方被索引了。在您的配置文件中搜索类似“errordocument404/404.shtml”的内容。是的,谢谢,似乎这就是问题所在。来自apache的定制ErrorDocument:)祝您有愉快的一天