2011-01-07 8 views
0

私は過去2時間、何も動かずに何かを得ることを試みてきました。私はGoogleとApacheのドキュメントのヘルプを探していますが、私はまだこの1つの方法を見つけることができません。それはファイルでない場合は.htaccess書き換え後にRewriteCondがテストされました

ブラウザに入力した任意のURLはindex.phpにリダイレクトすること
index.php 
public/css/screen.css 

私が欲しいのURL = $ 1:?私は2つのファイルを持っている

:ここでのことです。そうであれば、public/$ 1にリダイレクトする必要があります。私は、次の書き換えルールを使用してみました:するRewriteCondが満たされた後に書き換えのみ起こるので、

RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule (.*) public/$1 [QSA,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) index.php?url=$1 [QSA,L] 

残念ながら、最初の2つのRewriteCondは、CSS/screen.cssの代わりに、パブリック/ CSS/screen.cssに対してテストされます。

ApacheがRewriteRuleを実行するように指示する魔法のフラグはありますか?RewriteCondsがtrueの場合はテストし、そうでない場合は書き換えを元に戻しますか?あなたはどうやってこれをやりますか?

おかげ

答えて

0

のRewriteRuleが最初に比較されますが、何の置換はすべての条件にも一致しない限り発生しません - あなたは直接に影響を与えることはできません。 .htaccessファイル内REQUEST_FILENAMEがサーバすでにがにURLをマッピングされたものですので、あなたが例えばやるべき

:(。*)

するRewriteCondの%{DOCUMENT_ROOT} /公共/ $ 1〜F のRewriteRuleを公開/ $ 1はもともとあなたが相対URLに書き換えされているので、あなたはまた、適切でRewriteBaseが必要になります

を要求されたものの「残り」の部分である$ 1 [L]