Динамический возврат карты сайта с помощью Vue.js - PullRequest
0 голосов
/ 17 ноября 2018

Я работаю над проектом vue js, в котором есть несколько арендаторов. Я пытаюсь найти решение, в котором я могу динамически генерировать XML-файл для каждого арендатора. Арендаторы идентифицируются по URL-адресу, поэтому example.com/sitemap.xml будет представлять собой один файл Sitemap, а клиентом 2 будет example1.com/sitemap.xml и другой файл Sitemap. Оба URL обращаются к одному и тому же серверу, но загружают разные данные из-за своего домена. В свою очередь мне нужно, чтобы sitemap.xml также генерировался динамически.

Я проводил некоторые исследования и использовал маршруты в своем проекте, но я не уверен, смогу ли я установить маршрут для фактического имени файла, и если да, то возможно ли вернуть ответ xml прямо из vue через javascript , Ранее я пробовал что-то подобное для создания HTML за пределами моего приложения. Таким образом, у меня был маршрут, называющий это / test, который загружал бы компонент с именем test, тогда у компонента был бы код javscript, который заменяет html-документ другим html. Возможно, это будет подход к использованию?

https://www.npmjs.com/package/vue-router-middleware

Я также нашел пакет выше и еще один похожий, который, похоже, делает то, что мне нужно, позволяя мне вмешиваться между изменениями маршрута. Тем не менее, я не уверен, позволит ли это мне вернуть xml, пример, кажется, имеет логику, а затем заканчивается на next (), задаваясь вопросом, могу ли я вместо вызова next на самом деле просто вернуть документ xml в этот момент.

Любая помощь будет высоко ценится.

Спасибо.

1 Ответ

0 голосов
/ 02 февраля 2019

Если у вас есть обычное приложение Vue, оно работает на стороне клиента, а не на стороне сервера.Таким образом, для всех маршрутов ваш веб-сервер возвращает index.html.После загрузки vue router инициализируется на клиенте и определяет маршрут для отображения соответствующего представления / компонентов.

Поэтому запрос к example.com/sitemap.xml возвращает index.html

Я быПредположим, что веб-сканеры ожидают следующий заголовок в ответе и тело ответа XML-документа для файлов Sitemap.

content-type: text/xml; 

Возможно, вы сможете сгенерировать на стороне клиента, если сканеры запускают JavaScript, но япредположил бы, что лучше генерировать серверную часть и возвращать старый добрый XML.Ваш код на стороне сервера должен быть в состоянии генерировать это и переключаться в зависимости от клиента.Затем на сервере поместите специальный маршрут для /sitemap.xml, чтобы не возвращать приложение vue

...