我想使用 Apache 进行 404 重定向,并且找到了几种解决方案:
.htaccess 方法。但如果没有必要,我不想添加 .htaccess。
虚拟主机方法:
<VirtualHost *:80> ServerAlias *.example.com Redirect 404 /index.html ErrorDocument 404 /index.html </VirtualHost>
我想知道重定向 404 和 ErrorDocument 404 有什么区别?
答案1
您是否使用Redirect
指令进行测试?
Redirect 404 /index.html
意味着当客户端请求时将返回404响应/index.html
(即使它可能存在)。
ErrorDocument 404 /index.html
意思是当客户端访问一个不存在的URL时,Apache会重定向到index.html页面。
ErrorDocument
在这种情况下您必须使用。
答案2
答案3
如果您ErrorDocument
正确配置了该指令,您所要做的就是确保该文件实际上不存在。如果您尝试匹配文件名模式,则需要匹配该模式并将请求重写为不存在的响应。并确保关闭目录浏览:
<VirtualHost *:80>
Options -Indexes
ErrorDocument 404 /not-found.htm
AliasMatch /index\.* /something/not/here
</VirtualHost>
答案4
这是 3 种不同的事情:
在哪里配置你的指令:
- 在 Apache 配置中(例如 vhost 文件,通常位于 /etc/apache2/sites-available 中)
- 或者在 Web 根目录某处的 .htaccess 中。
大多数指令,您都可以放在任一文件中。.htaccess 中的指令始终适用于当前目录。您可以将它们放在 Web 根目录或子目录中。Apache 配置中的更改需要重新加载 Web 服务器(这是一件好事,因为它也会进行一些检查)。出于性能原因,通常建议完全不使用 .htaccess(如果没有必要)。
在定义指令的上下文中,如果
<VirtualHost *:80>
它在虚拟主机上下文中(意味着它适用于此虚拟主机)。您还可以使用目录上下文,这意味着它仅适用于特定目录。这在 Apache 2.4 中得到了很好的解释“配置部分”docs. .htaccess 适用于特定目录(如果将其放在顶层,则适用于全部目录)。如何配置,这意味着哪些指令。ErrorDocument 和 Redirect 的作用不同: