2017-03-08 2 views
0

特定の静的ファイルがPHPフロントコントローラを通過するのを防ぐために.htaccessルールを使用しようとしていますが、動作していないようです。次のようにルールは以下のとおりです。このRewriteCondは、静的ファイルタイプをスキップするのがなぜ機能しないのですか?

<IfModule mod_rewrite.c> 

RewriteEngine On 
RewriteBase/

# Don't try to pipe static files through php 
RewriteCond %{REQUEST_URI} !^(.*)\.(png|jpg|jpeg|gif|js|css|json|mp3|mp4|mov|ogv|ogg|ico)$ [NC] 
RewriteCond %{REQUEST_URI} !/wrapper/index\.php 
RewriteRule ^(.*)$ /wrapper/index.php [L] 

</IfModule> 

特定の拡張子を持つファイルをスキップするための条件にもかかわらず、私はhttps://example.com/test.jpgをヒットした場合、要求はまだ/wrapper/index.php経由するたびにパイプされます。

私はちょうどテストするには、この変化を試みたが、それはどちらか動作しませんでした:

RewriteCond %{REQUEST_URI} (.+)\.(png|jpg|jpeg|gif|js|css|json|mp3|mp4|mov|ogv|ogg|ico) [NC] 
RewriteRule ^(.*)$ $1 [L] 

RewriteCond %{REQUEST_URI} !/wrapper/index\.php 
RewriteRule ^(.*)$ /wrapper/index.php [L] 

Apacheのエラーログに伝えるものは何もありません。たぶん私の心は、仕事の長い一日からちょうど疲れているかもしれませんが、書き換え条件の欠陥を特定できませんでした。ご協力いただきありがとうございます。

答えて

0

私はこの問題を特定し、私はまだそのメカニズムをよく理解していません。このスクリプトは以前はうまく動作していたWordpressサイトのラッパーでした。明らかに何かが/wp-content/uploadsディレクトリのgroupworldexecuteビットを失う原因になりました。一度私は755にchmodded、この.htaccessルールは再び働き始めた。

htaccessルールをどのように、または、なぜ妨害したのかよく分かりませんが、サービスに復帰してうれしいです。

0

最初の条件にはエラーがあります。に始まり、何かに続いてあなたが書いた拡張子で終わるすべてのファイルをスキップします。このように^ *を失う:

RewriteCond %{REQUEST_URI} !(.+)\.(png|jpg|jpeg|gif|js|css|json|mp3|mp4|mov|ogv|ogg|ico)$ [NC] 
+0

考えてくれてありがとうございますが、私はあなたの改訂された条件が変更をもたらさなかったことを報告するのが悲しいです。 –

+0

私は努力を心から感謝しますが、それでも違いはありません。 –

+0

まあ、更新された答えは実際に(静的なファイルリストに "txt"拡張子を追加することで)テストされ、期待どおりに動作します。それはあなたの.htaccessファイルの全内容ですか? –

関連する問題