Передача get-параметров при php-роутинге

94
13 марта 2021, 21:00

возникла проблема при отправке get-запросов на сайт с простым php-роутингом.

.htaccess

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

index.php

...
var_dump($_GET);
$URL = explode('/', parse_url(strip_tags($_GET['url'])), PHP_URL_PATH);
switch($URL[0]){
    case 'page1': exit(require_once('page1'));
    case 'page2': exit(require_once('page2'));
    ...
    default: exit(require_once(''));
}
...

page1.php

<?php var_dump($_GET); ?>

При запросе, например: site.ru/?var=value

Результатом будет:

array(1) { ["var"]=> string(5) "value" }

В то же время при запросе site.ru/page1/?var=value

Результат уже будет совершенно иным:

array(1) { ["url"]=> string(6) "page1/"} array(1) { ["url"]=> string(6) "page1/"}

Вопрос состоит в том, как сохранить заданные get-параметры. Заранее благодарю за ответы и помощь

З.Ы. При изменении правила в htaccess на

RewriteRule ^([^?]*)\?*(.*)$ /index.php?url=$1&$2

Ничего не меняется

Answer 1

Дело было во флагах в htaccess, а именно необходимо было поставить флаг QSA, чтобы добавить строку запроса из запроса на замещенный URL. Флаг L пришлось убрать, так как [L, QSA] вызывало bad gateway

READ ALSO
с каким ключом COUNT() sql падает в массив $result

с каким ключом COUNT() sql падает в массив $result

делаю запрос к двум таблицам, через count получаю кол-во коментариев

94
Авторизация по mac через порт api в php

Авторизация по mac через порт api в php

Авторизация через через php на порт api происходит через ip, логин и пароль

81
Как достать из XYChart значения x и y?

Как достать из XYChart значения x и y?

У меня есть серия XYChart, которая заполняется при помощи циклаХотел был сделать отдельный цикл, который уже достает из этой серии отдельно x и y

84