我在另一个应用程序服务器前面有一个 Apache Web 服务器,使用 Proxy Pass。当对应用程序的请求返回错误 404 时,我想显示来自 Web 服务器的自定义错误页面,而不是来自应用程序服务器的页面。我试图在虚拟主机上设置 ErrorDocument 404,但它不起作用。我该怎么做?或者这是不可能的?
<VirtualHost *:80>
ServerName servername
DocumentRoot /somepath/
ProxyPass / http://localhost:8080/someapp/
ProxyPassReverse / http://localhost:8080/someapp/
ErrorDocument 404 /error.html
</VirtualHost>
Run Code Online (Sandbox Code Playgroud) 我想用 Apache 进行 404 重定向,我找到了几种解决方案:
.htaccess 方法。但如果没有必要,我不想添加 .htaccess。
虚拟主机方法:
Run Code Online (Sandbox Code Playgroud)<VirtualHost *:80> ServerAlias *.example.com Redirect 404 /index.html ErrorDocument 404 /index.html </VirtualHost>
我想知道 Redirect 404 和 ErrorDocument 404 有什么区别?
linux redirect errordocument http-status-code-404 apache-2.2
我正在尝试为我的整个 nginx 服务器设置一个默认的 error_page(就像所有虚拟主机一样)。
我正在尝试使用以下代码:
http {
...
...
error_page 404 /var/www/default/404.html;
...
...
}
Run Code Online (Sandbox Code Playgroud)
另外,如果我没有明确编写另一个虚拟主机,我希望能够创建一个虚拟主机并使其使用默认的 404.html。
就像是:
server {
...
server_name mydomain.com
root /var/www/mydomain.com/;
...
}
Run Code Online (Sandbox Code Playgroud)
无论如何,我收到以下错误:
[error] 16842#0: *1 open() "/var/www/mydomain.com/var/www/default/404.html" failed (2: No such file or directory)
Run Code Online (Sandbox Code Playgroud)
虽然我确实理解错误,并且我确实理解它为什么会发生,但我不明白为什么我不能告诉 NGINX 使用默认的 error_page 作为绝对路径而不是将它附加到我的 vhost 的根目录。
知道如何制作吗?
问候
这不起作用:
ErrorDocument 401 ../../src/wrong_pwd.php
Run Code Online (Sandbox Code Playgroud)
它将路径呈现为文本,它确实打印
../../src/wrong_pwd.php
Run Code Online (Sandbox Code Playgroud)
并且不输出真实文件。
如果我放置绝对路径,它将呈现/var/www/home
(我真的不知道为什么,也许是 httpd.conf 中的内容?)
我怎样才能做到这一点?
我认为我所要求的有点难以理解,所以,我试图让它更简单......
当我的服务器收到带有格式错误的主机标头的请求时,我需要它有一个自定义的 400 错误页面。
我理想中想要的是 ErrorDocument 400 \somepage.php
我可以通过访问诸如 之类的页面来生成 400 个错误http:\\myserver\bla%bla
,这将很好地转到我的脚本中。同样,我可以将该\somepage.php
部分更改为Test text
Apache 将返回该文本。
但是,如果 400 错误是由格式错误的主机标头引起的,它将适用于文本而不是网页。
任何人都可以对此有所了解并在我松开所有头发之前提供可行的解决方案吗?!(已经为此失去了很多!)。
我已将我的.htaccess
文件编辑为以下内容:
ErrorDocument 404 /index.php?page=page-not-found
ErrorDocument 400 /index.php?page=bad-request
Run Code Online (Sandbox Code Playgroud)
现在错误 404 正确重定向,但是如果我输入一个地址,例如http://example.com/%22%%5E$%%5E&%C2%A3&
服务器不会重定向 400 错误,而是显示默认的 apache 消息。我究竟做错了什么?
我无法获得适用于 400 Bad Request 的自定义错误文档。它是一个 CentOS LAMP 服务器。
ErrorDocument 400 /badrdoc.html
Run Code Online (Sandbox Code Playgroud)
我试过使用上面的:
他们都没有工作。Apache 提供其默认的 400 Bad Request 页面。
任何人都可以对此有所了解吗?
编辑:忘了提及,我在更改后重新启动了 Apache。