2011-12-02 2 views
0

나는이 내 htaccess로에서 다음과 같은 규칙 : 그 인덱스 일 전에 위의 디렉토리를 제거아파치 ENV의 VAR은 mod_rewrite는 규칙에서 설정되지

<IfModule mod_rewrite.c> 
    RewriteEngine on 

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

이이 요청 URI에 쿼리 문자열 값 q을 설정 (.php가 상주합니다).

예 : http://localhost/framework/testingq=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

PATH_INFO (@chrono에서 제안한대로)와 약간 다른 mod_rewrite 규칙을 사용하면 원하는대로 작동합니다!

수정 htaccess로는 :

<IfModule mod_rewrite.c> 
    RewriteEngine on 

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

당신은 지금 유효한 것으로 당신의 대답을 확인할 수 있습니다;) –

+0

나는 가정합니다; 그것은 내가 물었던 질문에 대답하지만 별칭의 URL (공유 된 SSL)에서는 작동하지 않습니다. 내 목표는 PHP에서 기본 URL을 지정할 필요가 없다는 것입니다. –

+0

그럼, 잘못 ... 질문을 수정하거나이 질문을 유효한 것으로 확인하고 다른 질문을 물어보십시오. –

0

나는 당신이 실제로 찾고있는 것은 PATH_INFO이다, 생각 - 여기 설명 : What exactly is PATH_INFO in PHP?

다른 이유가없는 한 바퀴를 재발견 할 필요가 없습니다.

+0

이것은 단지 현재의 상황처럼 작동; url이 index.php로 시작하는 경우에만 설정됩니다. 모든 요청에 ​​대해 apache env var를 설정하려고합니다. –

+0

나는 지금 당신이 준 조언에 감사한다. downvote를위한 사과, 나는 나의 전화에 틀린 화살을 건넜다. 그리고 지금까지 알아 차리지 않았다. –

관련 문제