将整个虚拟主机重定向到 404 页面

将整个虚拟主机重定向到 404 页面

我在 Apache 服务器上托管了几个网站。大多数网站都可以通过 http 和 https 访问。其中一个网站可能仅有的可以通过 http 访问。尝试通过 https 访问必须重定向到 404.php 页面 (除了尝试访问错误页面本身——应该允许)。

我可以使用 ErrorDocument 指令显示自定义文本消息,但我不知道如何将用户发送到 404 页面。配置如下所示:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName myserver
    ServerAlias myserver
    SSLEngine On
    SSLProxyEngine On

    SSLCertificateFile /path/to/certificatefile.pem
    SSLCertificateKeyFile /path/to/keyfile.pem
    Include /etc/ssl-apache.conf
    DocumentRoot /usr/local/website

    Redirect 404 /

    # This works!
    ErrorDocument 404 "Not here!"

    # This tries to redirect to the path to the 404.php file but does *not* work
    #ErrorDocument 404  /wordpress/wp-content/themes/Theme1/404.php

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory "/usr/local/website/html/wordpress">
  AllowOverride All
  Require all granted
</Directory>

<Directory />
  # required for apache 2.4+
  AllowOverride All
  Require all granted
  Options +Includes
  XBitHack on
  # allows CORS for static content
  Header set Access-Control-Allow-Origin *
</Directory>

</VirtualHost>
</IfModule>

尝试使用 ErrorDocument 重定向到 404.php 会导致:

该服务器上未找到所请求的 URL /。

此外,尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。

我也尝试过ErrorDocument 404 https://myserver/wordpress/wp-content/themes/Theme1/404.php但导致“重定向太多”。

如何让对此 VirtualHost 的所有请求重定向到自定义 404 页面?

答案1

删除以下行:

Redirect 404 /

并使用您的原始内容:

ErrorDocument 404  https://myserver/wordpress/wp-content/themes/Theme1/404.php

相关内容