Страпы пользовательских маршрутов для перенаправления в публичный каталог - PullRequest
1 голос
/ 10 марта 2019

Я развернул свое приложение реагирования в каталоге /public в strapi, все работает правильно, но когда я обновил страницу, strapi переопределяет мои react-router маршруты.

Итак ... как я могу перенаправить strapi, чтобы открыть публичный каталог, когда я использую определенные маршруты?

например, перенаправить /posts в публичный каталог?

1 Ответ

3 голосов
/ 12 марта 2019
Папка

Strapi /public предназначена для открытых ресурсов сервера, а не для размещения вашего клиентского приложения. И это не очень хорошая практика. Я должен написать это, прежде чем ответить на ваш вопрос.

Вот как обслуживаются статические файлы. https://github.com/strapi/strapi/blob/master/packages/strapi/lib/middlewares/public/index.js Это пользовательское промежуточное ПО.

Таким образом, вы должны будете создать свое собственное промежуточное программное обеспечение, следуя этой документации. https://strapi.io/documentation/3.x.x/advanced/middlewares.html#custom-middlewares

Итак, в ./middelwares/custom/index.js добавьте следующий код:

const path = require('path');

module.exports = strapi => {
  return {
    initialize: function(cb) {
      strapi.router.route({
        method: 'GET',
        path: '/post',
        handler: [
          async (ctx, next) => {
            ctx.url = path.basename(`${ctx.url}/index.html`);

            await next();
          },
          strapi.koaMiddlewares.static(strapi.config.middleware.settings.public.path || strapi.config.paths.static, {
            maxage: strapi.config.middleware.settings.public.maxAge,
            defer: true
          })
        ]
      });

      cb();
    }
  };
};

Тогда вам нужно будет включить ваше промежуточное ПО. Вам нужно будет обновить файл ./config/custom.json следующим кодом

{
  "myCustomConfiguration": "This configuration is accessible through strapi.config.myCustomConfiguration",
  "custom": {
    "enabled": true
  }
}

Вот и все!

...