.htaccess: переменные GET теряются при перезаписи
По-видимому, мой .htaccess переписывает все $_GET
переменные на моей странице:
При обращении к URL-адресу http://192.168.1.1/welcome/test?getvar=true и запуску var_dump($_GET)
в моем файле index.php, я получаю этот вывод:
array '/welcome/test' => string '' (length=0)
Таким образом, нет доступных $_GET
-data и никаких признаков getvar
-variable из моего URL-адреса.
Вот мой .htaccess:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L]
Что мне следует изменить, чтобы убедиться, что мой переписывающий файл работает по назначению, но все еще доступны переменные $_GET
?
4 Solutions collect form web for “.htaccess: переменные GET теряются при перезаписи”
Вам понадобится опция «QueryString Append»:
RewriteRule ^(.*)$ index.php?route=/$1 [QSA,L]
Редактировать: Добавлен вклад @ DonSeba, потому что он правильный.
незначительное изменение детали:
RewriteRule ^(.*)$ index.php?/$1 [L]
в
RewriteRule ^(.*)$ index.php?route=$1 [QSA,L]
теперь все маршруты будут видны в $ _GET ["route"]
RewriteRule ^(.*)?(.*)$ index.php?/$1&$2 [L]
<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.