Поскольку $_GET
содержит переменные в строке запроса - это часть URL после знака вопроса. Обратите внимание, что правила перезаписи в вашем .htaccess
файле превращают все URL-адреса, которые не ссылаются на существующие файлы или каталоги, в index.php
, без каких-либо следов исходного URL (хотя, как напомнил мне комментарий Гамбо, , он по-прежнему доступен через $_SERVER['REQUEST_URI']
. Ваши RewriteRule
s не создают строку запроса (т.е. они не ставят знак вопроса в URL), что вам нужно сделать, чтобы использовать $_GET
.
Я бы предложил заменить ваш последний RewriteRule
чем-то вроде
RewriteRule ^.*$ index.php$0 [NC,L]
То, что $0
добавит исходный URL к index.php
- так, например, http://localhost/index/index/test/1234/test2/4321
станет http://localhost/index.php/index/index/test/1234/test2/4321
Тогда запрос будет обработан index.php
, а переменная $_SERVER['PATH_INFO']
будет установлена в Оригинальный URL, /index/index/test/1234/test2/4321
. Вы можете написать некоторый PHP-код для его анализа и выбрать любые параметры, которые вам нужны.
Если вы не хотите, чтобы /index/index
в начале был сохранен в переменной path_info, вы можете использовать RewriteRule
, например:
RewriteRule ^/index/index(.*)$ index.php$1 [NC,L]
или
RewriteRule ^(/index)*(.*)$ index.php$2 [NC,L]
чтобы убрать любое количество ведущих /index
es.
РЕДАКТИРОВАТЬ : на самом деле, вы можете сохранить свои существующие RewriteRule
s и просто посмотреть на $_SERVER['REQUEST_URI']
, чтобы получить исходный URI запроса; не нужно возиться с информацией о пути. Затем вы можете разделить это на PHP.