Apache: RewriteRule удаляет завершающую точку - PullRequest
1 голос
/ 11 января 2010

Вот мои .htaccess правила:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)/(.*)$ index.php?var1=$1&item=$2&var2=%{REQUEST_URI} [NC,L]
RewriteRule ^(.*)$ index.php?var1=$1 [NC]

Вот URL (с конечной точкой в ​​конце): http://localhost/test/secondvar.

Проблема в том, что конечная точка не входит в переменную var2 GET

Я использовал print_r($_GET) и вот результат с указанным выше URL:

Array ( [var1] => test [var2] => secondvar [uri] => /test/secondvar. )

Итак, мой вопрос: как мне получить эту конечную точку из URL в качестве параметра для переменной? Как видите, REQUEST_URI показывает, что апач знает точку.

Я знаю, что не могу отправлять пути в качестве GET параметров и стараюсь читать пути в URI из PHP, но я хотел бы знать, почему точка не появляется и как ее исправить, если тоже Сложно, я предпочитаю прямого решения PHP.

РЕДАКТИРОВАТЬ: это не только конечная точка, но трейлинг? тоже ... = [

1 Ответ

0 голосов
/ 11 января 2010

Возможно, php исключает конечные точки.Я знаю, что они часто конвертируют точки в POST / GET в подчеркивания.Я бы просто сделал

explode('/',$_SERVER['REQUEST_URI'])
...