.htaccess: переменные GET теряются при перезаписи - PullRequest
17 голосов
/ 12 июля 2011

Судя по всему, моя перезапись .htaccess пожирает все переменные $_GET на моей странице:

При доступе к URL-адресу http://192.168.1.1/welcome/test?getvar=true и выполнении var_dump($_GET) в моем файле index.php яполучите этот вывод:

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

Таким образом, нет доступных $_GET -данных и никаких признаков getvar -вариата из моего URL.

Вот мой .htaccess:

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

Что я должен изменить, чтобы моя перезапись работала как задумано, но переменные $_GET все еще доступны?

Ответы [ 4 ]

57 голосов
/ 12 июля 2011

Вам нужна опция «QueryString Append»:

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

Редактировать: Добавлен вклад @ DonSeba, потому что он правильный.

7 голосов
/ 12 июля 2011

незначительное изменение детализации:

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

до

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

теперь все маршруты будут видны в $ _GET ["route"]

1 голос
/ 12 июля 2011
RewriteRule ^(.*)?(.*)$ index.php?/$1&$2 [L]
0 голосов
/ 08 декабря 2013
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^myapi(.*) ./my_real_api_file.php? [QSA]
</IfModule>

сделал трюк для меня.

Теперь вы можете запросить: http://www.mydomain.com/myapi?foo=xy&bar=ab

и будет перенаправлен на: http://www.mydomain.com/my_real_api_file.php?foo=xy&bar=ab

Может быть очень полезно, чтобы скрыть ваш код API.

...