我已经设置了
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.8.1:200
iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
-A FORWARD -i eth0 -o wlan0 -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
我在 apache 上运行虚拟主机服务器,地址为 192.168.8.1:200 工作正常,页面重定向正常,但仅限顶级域请求,例如。www.google.com
,这将被重定向到http://localhost/
。
但是:问题是对例如www.google.com/subpage
或 的请求www.anotherPage.com/subdir/subsubdir/page
,这会导致 apache 出现 404 错误。我希望它将这些子页面请求重定向到本地主机的根目录。
注意:我可以设置 htaccess 重写规则,但它会导致问题,因为它也会将请求重定向到http://localhost/subdir/subpages
。既然我不想要这个,那么合理的建议是什么?
答案1
.htaccess
仅重定向您想要的内容。你只需要正确地做就可以了。
RewriteCond %{HTTP_HOST} =!localhost [NC]
RewriteRule .* http://localhost/
答案2
在 @Hauke Laging 的回答的刺激下,我确保 .htaccess 位于我想要的文件夹中,即/var/www
,我编写了以下代码:
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f#if the requested is non existent as a file RewriteCond %{REQUEST_FILENAME} !-d#if the requested is non-existent as a dir RewriteRule (.*) / [L]
现在一切都很好。如果我请求不存在的文件或目录,我会被重定向到根目录。请记住,我仍然有 NAT 设置,现在我的 wifi 上的任何人都会被带到我的本地主页。 。 。无论他们在地址栏中输入什么内容。