@stikname

Как сделать редирект всех урл с? на главную страницу сайта (подробнее в описании)?

Вечер добрый, есть попытка написать редирект всех урл с ? на главную страницу сайта, но есть ньюансы.

Вот попытка реализации, само собой не работает:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_REQUEST} \?
RewriteCond %{REQUEST_URI} !.css$
RewriteCond %{REQUEST_URI} !.js$
RewriteRule ^(.*)$ http://%{HTTP_HOST} [R=301,L]


Условия при которых мы не делаем редирект:
1. если файл из запроса действительно существует, например asdf.php или asdf.xml?asdsad и т.д. любое расширение
2. если урл вида /asd.css или /asd.css?fasf - не важно, существует этот файл или нет
3. если урл вида /asd.js или /asd.js?fasf - не важно, существует этот файл или нет

во всех остальных случаях редиректим на главную страницу сайта. Вот как ?
  • Вопрос задан
  • 423 просмотра
Пригласить эксперта
Ответы на вопрос 2
shambler81
@shambler81 Куратор тега htaccess
если файл существует, то это ответ 200ок ?
тогда вам смело в nginx
Проверку в .htaccess я бы ооочень не рекомендовал, не говря уже что без костылей это не сделать.
Ответ написан
@jin_x
Предприниматель, программист, вокалист
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(css|js)$ [NC]
RewriteRule ^ / [R=301,L]
При этом запрос ? сохранится. Если же его не надо сохранять, то к слэшу в последней строке добавить "?": RewriteRule ^ /? [R=301,L]
Хотя, какой смысл делать проверку на .css и .js, если есть проверка REQUEST_FILENAME ?
Разве что для запросов несуществующие файлы...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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