ЧПУ и $_GET

ref

Новичок
Столкнулся с проблемой - не могу передавать GET запросы.

В .htaccess у меня так:
PHP:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Затем, я получаю запрошенный адрес и разбираю его:
PHP:
$routes = explode( '/', $_SERVER['REQUEST_URI'] );
До сегодняшнего дня меня полностью устраивала такая конструкция. Но вот беда, в такой конструкции у меня совершенно не работают GET запросы. Что посоветуете ?
 

ref

Новичок
Просто получается, если в адресной строке что-то типа site.ru/category?id=1 то разбирая $_SERVER['REQUEST_URI'], я получаю именно "category?id=1", а не "category" и $_GET['id'] = 1. И это очень не удобно.

Я пробовал строчку "RewriteRule . /index.php [L]" менять и на "[L,QSA]" и на [QSA] и на [QSA,L], но к сожалению или у меня руки кривые, или это работает как-то по другому, чем я себе представляю.
 

fixxxer

К.О.
Партнер клуба
REQUEST_URI содержит query string по определению. Убираешь query string - получаешь пустой $_GET. Он же не из воздуха берется.

Есть DOCUMENT_URI - это REQUEST_URI без query_string. Но не во всех конфигурациях он определен. Надежнее strtok(REQUEST_URI, '?').

Вот тебе супер-код:
PHP:
phpinfo(32);
всегда при экспериментах с реквестом смотри туда. увидишь много полезного
 

ref

Новичок
Спасибо большое за ответы и помощь! Всё получилось, всё работает!
 
Сверху