У меня есть файл .htaccess
, который должен перенаправить все запросы на index.php?url=$1
, за исключением случаев, когда запрос указывает на изображения или определенные файлы. Если они находятся где-то в директории public/
, они должны быть отправлены. Если запрошенный файл является изображением где-то из папки public/
, он перенаправляется на изображение по умолчанию, и если запрошенный файл является файлом HTML, JS, CSS, SWF и не находится в папке public/
, следует отправить simle 404-not found
назад. Все работает хорошо, за исключением того, что когда я запрашиваю образы от /public
или скажем public/images
, они также перенаправляются на изображение по умолчанию. Я пробовал все, даже %{ENV:REDIRECT_STATUS}
, но все тот же. Любые идеи, как я мог бы остановить цикл Если файл был подан в строке 11.?Рекурсивный цикл не остановится
Вот файл .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
SetEnv HTTP_MOD_REWRITE on
RewriteBase /wsproject/
Options All -Indexes
DirectoryIndex index.php
RewriteCond %{REQUEST_URI} ^public/.*\.(html|css|js|swf|jpe?g|png|gif|bmp|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule^- [L]
RewriteCond %{REQUEST_URI} \.(jpe?g|png|gif|bmp|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule^public/errors/img-not-found.png [L]
RewriteCond %{REQUEST_URI} \.(html|css|js|swf)$ [NC]
RewriteRule^- [R=404,L]
RewriteCond %{REQUEST_URI} !^public/.*$ [NC]
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
</IfModule>
Я использую код от прежнего ответа, вы можете увидеть здесь: Apache Rewrite module, complex rules