Как обойти кеширование статики *.txt в Nginx для мультивитрины?
Есть мультивитрина. Есть уникальные robots.txt для нескольких витрин в разных доменах в пределах этой одной установки. Есть хостинг с Apache+Nginx. Статика отдается Nginx согласно типам файлов. txt занесен в этот список.
Могу без проблем отдать как минимум один какой-нибудь robots.txt на все витрины в разные домены. Однако хотелось бы отдавать разное содержимое.
Админы сервера менять конфиг не хотят. Вносить исключения тоже не будут.
Какие остаются варианты в пределах данного конкретного хостинга с такими параметрами?
10 ответов
Разве что отдавать заголовки, которые могут помешать кэшированию. Last-Modified, Cache-Control вот это всё. Но вообще админы могут заставить nginx класть на эти заголовки. Так что тут гарантий нет особых.
В заголовке темы немного не так написал. Речь не совсем о кешировании, а об отдаче статики, ну есс-но статика кешируется т.к. cache-control nginx отдает.
Мне надо вот эту ситуацию обойти применительно к *.txt.
В этом случае без ln -s path-to-real-robots/robots.txt robots.txt есс-но не работает. 404 ошибка nginx'ом отдается.
Видимость robots.txt в корне я изобразил, а как сделать, чтобы мультивитринные заработали, чтобы не вытачивать универсальный robots.txt под всю установку. Да и в любом случае sitemap url в такой robots.txt уже не поставишь на раз и приходится Яндексу и Гуглу в сайтмап прямо носом тыкать, не надеясь на robots, в котором более сайтмап не живет.
Речь уже о том, что скорее всего придется этот проект утаскивать к себе на сервер, где всё это 100% будет работать.
У тебя файла robots.txt физически нет, значит его не может nginx отдавать, если файла нет , то управление должно передаваться fastcgi или апач, а там ты уже сам можешь устанавливать заголовки.
Если файла robots.txt физически в корне нет, то сервер отдает 404 ошибку и делает это nginx своей страницей ошибки. Никакое управление никуда дальше никому не передается. В этом похоже и проблема. Нет файла - стоп машина.
Чтобы хоть как-то работало пришлось положить симлинк в корень.
Есть еще пара способов. Думаю попробую их. Отпишу как получится.
проще на виртуальный серв перейти, иначе проблем будет много, например не будут работать плагины оптимизации картинок, тамб на лету и тд...
Уже приспособил там оптимизатор в фоновом режиме и избавился от thumbs налету. Это первое, с чем были проблемы.
Значит надо сделать так, чтобы файла robots физически не было, а mod_rewrite запрос на этот файл передавал какому-нибудь скрипту, который будет читать нужный robots в зависимости от того от какого домена его запросили. Ну и заголовки слать с нужными нам лозунгами
Это я в первую очередь попробовал. Не работает. Нет физически файла - все.
Любые попытки сделать любой rewrite в .htaccess с robots.txt хоть куда-нибудь на скрипт, хоть на альтернативный robots.txt ни к чему не приводят.
404 ошибка в случае отсутствия файла в корне всегда.
скажу одно, хостинг так себе)
Есть такое ощущение, но пока нет времени перенести все 14 сайтов до НГ без спешки и проблем. Потом разгребать буду.