LINUX.ORG.RU

[htaccess][RewriteEngine] Создание правила


0

1

Сил моих больше нет, уже неделю пытаюсь составить рабочие правила, так полностью и не получилось.

Если подробно, нужно следующее:

Запрашивается http://localhost/images/submit.png

.htaccess должен проверить наличие файла

%{DOCUMENT_ROOT}/sites/%{HTTP_HOST}/template/%{REQUEST_URI}
и отдать этот файл, если он существует.

Т.е если запрашивается http://localhost/images/submit.png, браузеру должен отдаться файл по пути /sites/localhost/template/images/submit.png

Если же такого файла нет, и не запрашивается robots.txt - передать запрос файлу index.php с GET параметром q. В примере выше, это index.php?q=images/submit.png

Делаю так:

RewriteEngine on
RewriteCond  %{DOCUMENT_ROOT}/sites/%{HTTP_HOST}/template/%{REQUEST_URI}  -f
RewriteRule  ^(.*)$  %{DOCUMENT_ROOT}/sites/%{HTTP_HOST}/template/$1  [L,QSA]

#RewriteCond %{REQUEST_URI} !=/robots.txt
#RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Первая часть работает, однако если расскомментировать вторую - запрос постоянно передается на индекс, как будто первого правила нет или [L] для него ничего не значит.

Возможно ли вообще провернуть такое с помощью htaccess? Варианты с 301 редиректом не подходят, файлы должны отдаваться напрямую.

ЧЯДНТ? Заранее благодарю за помощь.

Ответ на: комментарий от sjinks

Спасибо огромное!

Так сделать не решался, т.к нужно было запретить прямой доступ к подкатегориям с «системными» файлами. Решил проблему путем «deny from all» в этих категориях.

Еще раз большое спасибо за помощь (:

BredoGen ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.