Apache ENV var не устанавливается в правиле mod_rewrite - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть следующие правила в моем .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond $1 !^index\.php$
    RewriteRule ^(.*)$ index.php?q=$1 [L]
</IfModule>

Это устанавливает значение строки запроса q равным запросу uri (удаляя все предшествующие каталоги до того, в котором находится index.php).

Например: http://localhost/framework/testing устанавливает q=testing.

Я хотел бы изменить это так, чтобы вместо установки строки запроса я хотел установить переменную окружения.Я пробовал следующее, но оно не работает (среда var не устанавливается):

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond $1 !^index\.php$
    RewriteRule ^(.*)$ index.php [ENV=request:$1,L]
</IfModule>

Как ни странно, среда var будет установлена, если запрос начинается с index.php, например:http://localhost/framework/index.php/testing комплекты q=index.php/testing

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Используя PATH_INFO (как предложено @chrono) и немного другие правила mod_rewrite, у меня все работает как надо!

Изменено .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond $1 !^index\.php
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
0 голосов
/ 02 декабря 2011

Я думаю, что вы на самом деле ищете PATH_INFO - как описано здесь: Что такое PATH_INFO в PHP?

Не нужно изобретать велосипед, если неткакая-то другая причина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...