2011-12-02 10 views
0

私は私の.htaccessに次のルールがあります。ApacheのENVのvarはmod_rewriteのルールで設定されていない

<IfModule mod_rewrite.c> 
    RewriteEngine on 

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

をこれは、インデックス1の前に任意の先行するディレクトリをストリッピング(リクエスト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> 

奇妙な要求は、たとえば、index.phpので始まる場合、環境varがセットされます: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

さて、errr ...あなたの質問を修正するか、この1つを有効とチェックして、別の質問をしてもよいでしょうか? –

0

私は、あなたが実際に探していることはPATH_INFOである、と思う - ここで説明するように:What exactly is PATH_INFO in PHP?

他のいくつかの理由がない限り車輪の再発明する必要はありません。

+0

これはただ、現在の状況のように動作します。 URLがindex.phpで始まる場合にのみ設定されます。私は任意の要求に設定されるように、apacheのenv varを取得しようとしています。 –

+0

私はあなたが与えてくれたアドバイスで、これを今働いています。ありがとう! downvoteの謝罪、私は私の電話で間違った矢印をタップし、今まで気づいていない。 –

関連する問題