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

say*_*han 9 dns apache2

我正在制作一个广告阻止 DNS 服务器,它将所有广告域重定向到一个Apache实例。所以像

www.addomain.com
Run Code Online (Sandbox Code Playgroud)

被重定向到

dnsserver.localnetwork
Run Code Online (Sandbox Code Playgroud)

但是,偶尔我会遇到更像的链接

www.addomain.com/some_ad
Run Code Online (Sandbox Code Playgroud)

被重定向到

dnsserver.localnetwork/some_ad
Run Code Online (Sandbox Code Playgroud)

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

index.html无论实际请求如何,我都希望有某种方法可以使 Apache serve 。否则,如果您有不涉及 Apache 的替代解决方案,我也愿意。

Eve*_*mbH 19

在 Ubuntu 中,确保mod_alias已启用:

sudo a2enmod alias
Run Code Online (Sandbox Code Playgroud)

然后在您的 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>
Run Code Online (Sandbox Code Playgroud)

现在一切都被重定向到/index.html.


Tom*_*mon 8

您需要在 .htaccess 文件中设置重写规则。像下面这样的东西应该工作:

RewriteRule ^*$  http://www.addomain.com/index.html [R=301,NC,L]
Run Code Online (Sandbox Code Playgroud)

  • 这会进行重定向。它不直接提供index.html。 (2认同)