Jako, że to jest mój pierwszy post mówię dzień dobry wszystkim :-)
Piszę z takim problemem:
Posiadam serwer www w sieci LAN, który działa na adresacji 192.168.x.x. Stoi sobie na nim strona www, z której korzystają ludzie podłączeni do sieci LAN jak również ludzie podłączeni przez Internet. Połączenie przez Internet realizowane jest przez przekierowanie portu 8081 na port 80 w serwerze czyli jeśli taki delikwent chce się dostać z zewnątrz to musi wpisać http://adres_ip_publiczny:8081/strona.
Tyle wstępu, a teraz to co chcę uzyskać. Uruchomiłem na tym serwerze dostęp przez SSL i chcę uzyskać takie oto dwa przekierowania automatyczne:
- Kiedy użytkownik wpisuje na pasku adresu http://192.168.x.x/strona Apache ma to przekierować na https://192.168.x.x/strona;
- Kiedy użytkownik wpisuje natomiast http://adres_ip_publiczny:8081/strona Apache ma to przekierować na https://adres_ip_publiczny:8082/strona;
Port 8082 przekierowałem na port 443 tegoż serwera www.
Chciałem uzyskać to takimi wyrażeniami, ale nie wiem dlaczego nie działają:
Pomyślałem sobie, że zrobię to w ten sposób, że będę przekierowywał ludzi w zależności od tego z jakiego adresu pochodzi żądanie.
Kod
RewriteEngine On
# Jeżeli komputer klienta nie ma adresu w sieci 192.168.x.x to przekieruj żądanie na https://adres_ip_publiczny:8082/strona
RewriteCond %{REMOTE_ADDR} !^192\.168\.[0-9]{3}\.[0-9]{3}$
RewriteRule (.*) https://adres_ip_publiczny:8082%{REQUEST_URI}
# Jeżeli komputer klienta ma adres w sieci 192.168.x.x to przekieruj żądanie na https://192.168.x.x%{REQUEST_URI}
RewriteCond %{REMOTE_ADDR} =^192\.168\.[0-9]{3}\.[0-9]{3}$
RewriteRule (.*) https://192.168.x.x%{REQUEST_URI} #adres serwera WWW w sieci lokalnej
# Jeżeli komputer klienta nie ma adresu w sieci 192.168.x.x to przekieruj żądanie na https://adres_ip_publiczny:8082/strona
RewriteCond %{REMOTE_ADDR} !^192\.168\.[0-9]{3}\.[0-9]{3}$
RewriteRule (.*) https://adres_ip_publiczny:8082%{REQUEST_URI}
# Jeżeli komputer klienta ma adres w sieci 192.168.x.x to przekieruj żądanie na https://192.168.x.x%{REQUEST_URI}
RewriteCond %{REMOTE_ADDR} =^192\.168\.[0-9]{3}\.[0-9]{3}$
RewriteRule (.*) https://192.168.x.x%{REQUEST_URI} #adres serwera WWW w sieci lokalnej
Jakimś dziwnym sposobem ta druga reguła w ogóle nie działa nawet jak testuję to z komputera o adresie 192.168.x.x to przekierowanie idzie na adres IP publiczny.
Pozdrawiam serdecznie
Grzesiek M.