@RootDevice

Как провести проверку на наличие файла средствами .htaccess?

Сообщество, помогите пожалуйста.
Нужно средствами .htaccess построить такое правило.

Если запрошенного (через URL) файла по указанному пути нет, но он есть в папке xxx то вернуть (перенаправить на него) в папку xxx, в остальном случае (когда его нет ни по запрошенному пути ни в папке xxx) перенаправить на index.php

Как совместить все это в рабочее решение - не осилю. Мысли двигаются в следующем направлении:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]


Если это не папка и не файл то сделать редирект на главную. Как проверить запрошенную страницу в другой папке - знаний не хватило.
  • Вопрос задан
  • 2881 просмотр
Пригласить эксперта
Ответы на вопрос 2
maxaon
@maxaon
Может RewriteCond /folder/%{REQUEST_FILENAME} -d? И действие соответственно.
Ответ написан
@RootDevice Автор вопроса
Начало наступать просветление. Стандартный механизм, который посоветовал maxaon прекрасно работает из корня домена. Но вот из подпапки не получается, потому что %{REQUEST_FILENAME} содержить путь от корня домена, а не от текущей папки в браузере пользователя.

И для запроса
mysite.ru/workdir/xxx/1.html
с текущей директорией workdir значение переменной
REQUEST_FILENAME равено workdir/xxx/1.html

Но что бы запрос был обработан корректно REQUEST_FILENAME должен быть равен 1.html Использование директивы AcceptPathInfo OFF ничего не дало.

PS. Под текущей директорий понимаем ту, в которой лежит htaccess.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы