it-swarm.dev

.htaccess: GET-Variablen gehen beim Überschreiben verloren

Anscheinend frisst mein .htaccess-Rewrite alle $_GET- Variablen auf meiner Seite auf:

Beim Zugriff auf die URL http://192.168.1.1/welcome/test?getvar=true und beim Ausführen von var_dump($_GET) in meiner index.php-Datei erhalte ich folgende Ausgabe:

array
'/welcome/test' => string '' (length=0)

Also keine $_GET- Daten vorhanden und kein Zeichen der getvar- Variable von meiner URL.

Hier ist mein .htaccess:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Was muss ich ändern, um sicherzustellen, dass mein Umschreiben wie beabsichtigt funktioniert, aber auf $_GET- Variablen noch zugegriffen werden kann?

17
Industrial

Sie benötigen die Option "QueryString Append":

RewriteRule ^(.*)$ index.php?route=/$1 [QSA,L]

Edit: @DonSebas Beitrag hinzugefügt, weil er korrekt ist.

54
Kevin Stricker

geringfügige Detailänderung:

RewriteRule ^(.*)$ index.php?/$1 [L]

zu

RewriteRule ^(.*)$ index.php?route=$1 [QSA,L]

jetzt sind alle Routen in $ _GET ["route"] sichtbar

6
DonSeba
RewriteRule ^(.*)?(.*)$ index.php?/$1&$2 [L]
1
Neal
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^myapi(.*) ./my_real_api_file.php? [QSA]
</IfModule>

Hat den Trick für mich getan.

Sie können jetzt Folgendes anfordern: http://www.mydomain.com/myapi?foo=xy&bar=ab

und werden weitergeleitet an: http://www.mydomain.com/my_real_api_file.php?foo=xy&bar=ab

Kann sehr nützlich sein, um Ihren API-Code zu verbergen.

0
Colin