私は設定しました。
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
アドレスが192.168.8.1:200のApacheで仮想ホストサーバーを実行しているのにうまく機能します。ページのリダイレクトは機能しますが、たとえば最上位のドメイン要求に対してのみ機能します。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設定が残っており、Wi-Fiの全員が自分のローカルホームページに移動することに注意してください。 。 。アドレスバーに何を入力しても構いません。