2011-12-02 2 views
0

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

<IfModule mod_rewrite.c> 
    RewriteEngine on 

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

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

Например,: http://localhost/framework/testingq=testing.

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

<IfModule mod_rewrite.c> 
    RewriteEngine on 

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

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

ответ

2

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

Модифицированный .htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

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

Вы можете проверить свой ответ как действительный сейчас;) –

+0

Я полагаю; он отвечает на вопрос, который я задал, но он не работает с aliased urls (shared ssl). Моя цель - не указывать базовый URL-адрес в моем PHP. –

+0

Так хорошо, errr ... изменить свой вопрос или проверить его как действительный и, возможно, спросить другого? –

0

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

нет необходимости изобретать колесо, если нет какой-либо другой причине.

+0

Это работает так же, как текущая ситуация; Он устанавливается только в том случае, если URL-адрес начинается с index.php. Я пытаюсь установить apache env var для любого запроса. –

+0

У меня теперь есть работа с советом, который вы дали, спасибо! Извиняясь за нисходящее, я постучал по неправильной стрелке на свой телефон и до сих пор не заметил. –

Смежные вопросы