2011-12-23 11 views
2

これは私の.htaccessファイルです:RewriteCondでローカルパスを取得するには?

RewriteEngine On 

RewriteBase /projs/CodeIgniterTest 

RewriteCond %{REQUEST_URI} !^/projs/CodeIgniterTest/index.php 
RewriteRule ^(.*)$ index.php/$0 

正しくRewriteRule作品が、私はローカルパスで動作するようにRewriteCondラインを取得することはできません。私はこれが仕事をしたい:

RewriteCond %{REQUEST_URI} !^index.php 

しかし、悲しいかな%{REQUEST_URI}

RewriteBaseラインについてはあまり気にして完全なパスを使用していません。私の望む結果を達成するための方法はありますか?私はプロジェクトのパスを変更するたびに.htaccessファイルを編集する必要はありません。

答えて

3
RewriteRule ^index.php - [L] 
RewriteRule ^(.*)$ index.php/$0 

それとも

RewriteCond $0 !^index.php 
RewriteRule ^(.*)$ index.php/$0 
+0

'のRewriteCond $!0^index.php'は魅力のように働きました!しかし '$ 0'部分について説明できますか?私はRewriteCondのドキュメントのようなものについては言及していません。 – Hubro

+1

Apacheはrewriteecondルールを実行する前に、rewriteルールのregexとマッチします。 RewriteCondはTestStringで$ 0..9を使用できます。したがって、あなたのケースでは$ 0はあなたのrewritebaseに相対的なパスを含んでいます。 (http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecondの最初の箇条書きにあります) – Gerben

+0

非常によく説明されました、ありがとう! – Hubro