Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z Rewrite
Forum PHP.pl > Forum > Serwery WWW > Apache
grzesiek311
Dzień dobry,

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


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.
iro88
Sugerując się tymi przykładami. Zapisałbym reguły w ten sposób:
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

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.