mod_rewrite .htaccessの問題

.htaccess apache mod-rewrite
mod_rewrite .htaccessの問題

私のhtaccessには次の行があり、cssファイルを別の場所に書き換えます:

RewriteCond {REQUEST_FILENAME} !-f [NC] OR
RewriteCond {REQUEST_FILENAME} !-d [NC]
RewriteRule ^\\/?(.*)\.(css|js)$ public/$2/$1.$2 [L,NC,NE]

しかし、サイトがファイルを読み込もうとすると、構成の誤りがあります。 実際の問題は、$ 1と$ 2の間のドットです。 サーバーがファイルを見つけると、無限ループに入ると思います。

誰もがそのエラーの理由を知っていますか?

  0  0


ベストアンサー

このいくつかの構文を見てからしばらく経ちましたが、「OR」は括弧内にあると思いました。 とはいえ、それは問題の一部です。両方の `RewriteCond`条件が真である必要があります。 また、ファイルが実際に存在する必要があります。ファイルが見つからない場合は、とにかく無限ループに入ります。 別のアプローチは次のとおりです。

RewriteRule ^public/(css|js)/ - [NC,L]

public / css`または public / js`が存在するかどうかにかかわらず、何も書き換えられないように、 `RewriteCond`ディレクティブの前に。

また、ディレクトリごとのコンテキスト(つまり、.htaccess)では、 `RewriteRule`が一致する値はスラッシュで始まりません。 それはあなたの問題を引き起こしていませんが、それはあなたにいくつかの文字を保存し、正規表現を読みやすくすることができます。

2


無限ループを回避するには、次のようなルールを記述します。

RewriteRule ^(?!public/)(.*)\.(css|js)$ public/$2/$1.$2 [L,NC]

負の先読みは、無限ループを防ぎます。

2


リダイレクトするディレクトリも正規表現を満たすため、無限ループに入ります。

0


タイトルとURLをコピーしました