it-roy-ru.com

.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- доступных данных и никаких признаков переменной getvar- из моего URL.

Вот мой .htaccess:

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

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

17
Industrial

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

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

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

54
Kevin Stricker

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

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

в 

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

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

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>

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

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

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

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

0
Colin