我想用Apache做404redirect,我发现了几个解决scheme:
.htaccess方法。 但是如果没有必要,我不想添加.htaccess。
虚拟主机方法:
<VirtualHost *:80> ServerAlias *.example.com Redirect 404 /index.html ErrorDocument 404 /index.html </VirtualHost>
我想知道有什么区别redirect404和ErrorDocument 404?
你用Redirect指令testing过吗?
Redirect 404 /index.html表示当客户端请求/index.html (即使可能存在)时,将返回404响应。
ErrorDocument 404 /index.html表示当客户端访问不存在的URL时,Apache将redirect到index.html页面。
在这种情况下,您必须使用ErrorDocument 。
这两者通常是无关的。 当我试图build立一个404状态的redirect时,我得到了错误消息Redirect URL not valid for this status当试图启动Apache的Redirect URL not valid for this status 。
redirect将客户端发送到新地址并为客户端提供状态。 返回的状态通常是30x值。
ErrorDocument指令configurationapache在发生types为nnn的错误时返回特定的页面(而不是默认页面)。 在你的例子中,当404(Not Found)错误发生时,你正在说return /index.html。
你想达到什么目的?
如果您正确地configuration了ErrorDocument指令,您所要做的就是确保该文件实际上不存在。 如果你想匹配一个文件名模式,那么你需要匹配模式,并重写请求到一个不存在的响应。 并确保closures目录浏览:
<VirtualHost *:80> Options -Indexes ErrorDocument 404 /not-found.htm AliasMatch /index\.* /something/not/here </VirtualHost>