我正在制作一个广告拦截 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”