htaccess не игнорирует изображения, как следует? - PullRequest
0 голосов
/ 02 марта 2012

У меня есть файл htaccess, который, как предполагается, перенаправляет любые несуществующие файлы / папки / и т. Д. В скрипт index.php приложения, где они обрабатываются при переписывании SEO приложения.

Проблема в том, что любые отсутствующие изображения также перенаправляются в приложение, что вызывает большую дополнительную нагрузку и является ненужным. Я пытался заставить этот файл htaccess игнорировать изображения, но хотя этот должен работать, это не так, и у меня совершенно нет идей относительно того, почему ...

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !.*\.(gif|png|jpe?g|ico|swf)$ [NC]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?sef_rewrite=1 [L]

Когда я делаю запрос к http://www.domain.com/folder_that_doesnt_exist/image.jpg, это перенаправляет на index.php

Когда я делаю запрос к http://www.domain.com/folder_that_does_exist/image.jpg, он также перенаправляет на индексный скрипт

Я не уверен, что мне здесь не хватает, потому что, если не указано ИЛИ, разве RewriteRule не должен применяться, только если запрос передает все операторов RewriteCond? который он явно не должен проходить ...

Обновление:

Я изменил код следующим образом, чтобы устранить возможные проблемы, но он все еще перенаправляет все несуществующие изображения в сценарий ...

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.(gif|png|jpe?g|ico|swf)$ [NC]
RewriteCond %{REQUEST_FILENAME} !\.(gif|png|jpe?g|ico|swf)$ [NC]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?sef_rewrite=1 [L]

1 Ответ

2 голосов
/ 02 марта 2012

Маби попробуй это:

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} \.(gif|png|jpe?g|ico|swf)$ [NC]
RewriteRule .* - [R=404,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
...