无论输入的 URL 是什么,如何让 Apache 提供单个静态页面?

无论输入的 URL 是什么,如何让 Apache 提供单个静态页面?

我正在制作一个广告拦截 DNS 服务器,将所有广告域名重定向到阿帕奇.因此

www.addomain.com

被重定向到

dnsserver.localnetwork

然而,偶尔我也会碰到类似的链接

www.addomain.com/some_ad

被重定向到

dnsserver.localnetwork/some_ad

它甚至不存在,因此会引发404错误。

我希望有某种方法可以让 Apache 提供服务index.html,而不管实际请求是什么。否则,如果您有不涉及 Apache 的替代解决方案,我也会支持。

答案1

在 Ubuntu 中,确保mod_alias已启用:

sudo a2enmod alias

然后在您的 VirtualHost 指令中您可以使用AliasMatch

例子:

<VirtualHost *:80>
    DocumentRoot /path/to/your/host
    ServerName yourdomain.com
    DirectoryIndex index.html

    AliasMatch ^/(.*)$ /path/to/your/host/index.html

    <Directory "/path/to/your/host">
      Require all granted
    </Directory>
</VirtualHost>

现在所有内容都重定向到/index.html

答案2

您需要在 .htaccess 文件中设置重写规则。类似下面的内容应该有效:

RewriteRule ^*$  http://www.addomain.com/index.html [R=301,NC,L]

答案3

另一个更简单的选项是将 404 错误页面更改为您想要在网站上的所有页面上显示的静态页面。因此,在您的 apache2 配置文件中查找此行(或类似内容):

ErrorDocument 404 /errors/not_found.html

并将“/errors/not_found.html”更改为:“/index.html”

相关内容