Как перенаправить HTTP-запросы для подстраниц в домене на другой адрес с помощью iptables

У меня есть настройка
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, это вызывает ошибку 404 от apache. . Я хочу, чтобы он перенаправлял даже эти запросы подстраницы в корень на локальном хосте.

ПРЕДОСТЕРЕЖЕНИЕ: я мог бы настроить правило перезаписи htaccess, но это вызвало бы проблемы, поскольку оно также перенаправляло бы запросы на http://localhost/subdir/subpages . Раз я этого не хочу, то какое разумное предложение?

-2
19.09.2017, 20:41
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]

Теперь все в порядке. Если я запрашиваю несуществующие файлы или каталоги, меня перенаправляют в root. Имея в виду, что у меня все еще есть настройки NAT, теперь любой пользователь моего Wi-Fi попадает на мою локальную домашнюю страницу... независимо от того, что они вводят в адресную строку.

0
28.01.2020, 05:17

.htaccessперенаправляет только то, что вы хотите. Вы просто должны сделать это правильно.

RewriteCond %{HTTP_HOST} =!localhost [NC]
RewriteRule.* http://localhost/
0
28.01.2020, 05:17

Теги

Похожие вопросы