Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: htaccess - usunięcie query string oraz znaku "?"
Forum PHP.pl > Forum > Serwery WWW
Scandall
Witam,

mam taki nietypowy problem, którego nie mogę rozwiązać.... Może ktoś z forumowiczów już się z tym zmagał lub ma pomysł jak to zrobić.

Otóż - mamy serwis internetowy, który ma w celach bezpieczeństwa wyłączoną obsługę znaku "?" w adresie URL (zablokowana obsługa metody GET). Wywołanie adresu URL ze znakiem "?" powoduje wyświetlenie komunikatu o błędzie. Problem polega na tym, że wiele zewnętrznych systemów marketingowych (sieci reklamowe, narzędzia do e-marketingu) domyślnie dodają parametry po znaku "?".

I tu pytanie - czy można jakoś w htaccess sprawić (dodać odpowiednie warunku na początku tego pliku) aby wszystko po znaku "?" wraz ze znakiem "?" było ignorowane w dalszym przetwarzaniu reguł w htaccess?

Dla przykładu - mamy url: domena.pl/jakas_podstrona.html
Kierujemy ruch na url: domena.pl/jakas_podstrona.html?parametr=wartosc

Na początku przetwarzania w htaccess obcina nam "?parametr=wartosc" (jednak w przeglądarce jest on nadal widoczny - chodzi o to aby javascript miał do niego dostęp).

Myślałem nad zastosowaniem czegoś podobnego do tego:

RewriteCond %{THE_REQUEST} ^[A-Z]+ /.*\ HTTP
RewriteCond %{QUERY_STRING} !^$
RewriteRule .* http://domena.pl%{REQUEST_URI}? [R=301,L]

Jednak to nie rozwiązuje problemu - następuje przekierowanie na adres url bez "?" i parametrów. A mi chodzi o to aby one istniały ale były "ignorowane" przez dalsze reguły htaccess.
trueblue
A jakie to bezpieczeństwo ma zapewnić?

Jeśli nie wykorzystujesz w kodzie zmiennych z $_GET, to nie mają znaczenia.
Scandall
Ja to wiem ;-) Ale nie ja administruję tą stroną ;-) Szukam jedynie rozwiązania tego problemu gdyż admin z obawy, że gdzieś coś było użyte - nie chce tego włączyć - sam od niedawna zajmuje się tą aplikacją.

Wracając do tematu - da się takie coś zrobić czy raczej nie?
trueblue
Nie wiem czy coś takiego zadziała:
1. Kierujesz QUERY_STRING na #, czyli domena.pl?a=1 na domena.pl#?a=1
2. W JS przed wykonaniem innych skryptów zmieniasz hash na prawdziwy query string.
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.