내가 설정해놨어
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인 아파치에서 가상 호스트 서버를 실행하고 있는데 잘 작동합니다. 페이지 리디렉션은 작동하지만 예를 들어 최상위 도메인 요청에만 작동합니다. 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에 있는 모든 사람이 내 로컬 홈페이지로 이동된다는 점을 명심하세요. . . 주소 표시줄에 무엇을 입력하든 상관없습니다.