Как обойти кеширование статики *.txt в Nginx для мультивитрины?

Есть мультивитрина. Есть уникальные robots.txt для нескольких витрин в разных доменах в пределах этой одной установки. Есть хостинг с Apache+Nginx. Статика отдается Nginx согласно типам файлов. txt занесен в этот список.

Могу без проблем отдать как минимум один какой-нибудь robots.txt на все витрины в разные домены. Однако хотелось бы отдавать разное содержимое.

Админы сервера менять конфиг не хотят. Вносить исключения тоже не будут.

Какие остаются варианты в пределах данного конкретного хостинга с такими параметрами?

1 ответ

  • 1

    Разве что отдавать заголовки, которые могут помешать кэшированию. Last-Modified, Cache-Control вот это всё. Но вообще админы могут заставить nginx класть на эти заголовки. Так что тут гарантий нет особых.

    • 0
      replicant replicant 24 декабря 2019 12:37 #

      В заголовке темы немного не так написал. Речь не совсем о кешировании, а об отдаче статики, ну есс-но статика кешируется т.к. 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% будет работать.

      • +1

        У тебя файла robots.txt физически нет, значит его не может nginx отдавать, если файла нет , то управление должно передаваться fastcgi или апач, а там ты уже сам можешь устанавливать заголовки.

        • 0
          replicant replicant 24 декабря 2019 13:15 #

          Если файла robots.txt физически в корне нет, то сервер отдает 404 ошибку и делает это nginx своей страницей ошибки. Никакое управление никуда дальше никому не передается. В этом похоже и проблема. Нет файла - стоп машина.

          Чтобы хоть как-то работало пришлось положить симлинк в корень.

          Есть еще пара способов. Думаю попробую их. Отпишу как получится.

          • +1

            проще на виртуальный серв перейти, иначе проблем будет много, например не будут работать плагины оптимизации картинок, тамб на лету и тд... 

            • 0
              replicant replicant 24 декабря 2019 13:56 #

              Уже приспособил там оптимизатор в фоновом режиме и избавился от thumbs налету. Это первое, с чем были проблемы.

      • +1

        Значит надо сделать так, чтобы файла robots физически не было, а mod_rewrite запрос на этот файл передавал какому-нибудь скрипту, который будет читать нужный robots в зависимости от того от какого домена его запросили. Ну и заголовки слать с нужными нам лозунгами

        • 0
          replicant replicant 24 декабря 2019 13:36 #

          Это я в первую очередь попробовал. Не работает. Нет физически файла - все.

          Любые попытки сделать любой rewrite в .htaccess с robots.txt хоть куда-нибудь на скрипт, хоть на альтернативный robots.txt ни к чему не приводят.

          404 ошибка в случае отсутствия файла в корне всегда.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите