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