- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Суть проста
Вся статика лежит в директории static/
Когда запрос идет на сайт http://site.ru/img/logo.gif то должен быть рерайт на static/img/logo.gif
А если такого нет - то рерайт на index.php в корневой директории
Вроде задача тривиальная, а запутался :confused:
RewriteEngine on
RewriteBase /
#Если .htm файл устанавливаем переменную окружения HTM=1
RewriteRule ^static/(.*)$ $1 [C,E=HTM:1]
#Проверяем существует ли файл на диске
RewriteCond %{REQUEST_FILENAME}.html -f
#Если существует делаем редирект
RewriteRule ^(.*)$ static/$1
# если не сеществует и переменная окружения HTM=1 показываем запрошенный .htm
RewriteCond %{ENV:HTM} ^1$
RewriteRule ^(.*)$ index.php
как то так!
RewriteEngine On
RewriteBase /
#есть
RewriteCond %{REQUEST_URI} !^/static/
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|css|js|jpf)$
RewriteCond %{DOCUMENT_ROOT}/static%{REQUEST_URI} -f
RewriteRule . /static%{REQUEST_URI} [L]
#нету
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|css|js|jpf)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
siv1987, этот вариант работает, но имеет существенный недостаток - там указываются расширения статики
А мне надо чтоб работало с разными расширениями без перечислений
Плюс еще одно - эти правила не работают при вложенных директориях
Видать не такая уж простая задача ;)
---------- Добавлено 16.12.2013 в 11:07 ----------
В общем получилось так:
RewriteCond %{REQUEST_URI} !^/static/
RewriteCond %{DOCUMENT_ROOT}/static%{REQUEST_URI} -f
RewriteRule . /static%{REQUEST_URI} [L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
Не знаю насколько корректно, но работает
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]
По сути это одно и тоже, так что один из блоков можно убрать.
По поводу вложенных директорий вроде бы должно работать.
В принципе все довольно корректно, просто без указания расширений все несуществующие запросы будут реврайтится на index.php