【问题标题】:Change Symfony public directory to fit website更改 Symfony 公共目录以适应网站
【发布时间】:2020-05-18 22:03:49
【问题描述】:

我想在我的公共目录中创建名为“app”的目录,并使其成为我的应用程序的根目录,而不是“公共”目录。除了添加我应该怎么做:

"extra": {
    "public-dir": "public/app/",
...
}

我有一个应该放在“app”目录中的 vue 应用程序和一个将放在“public”目录中的 wordpress 实例,所以当我输入 www.mywebsite.com 时,我得到 wordpress 网站,当我输入 www. mywebsite.com/app 我得到了我的 symfony/vue 应用程序。 到目前为止,我编辑了我的 webpack.config.js:

.setOutputPath("public/app/build/")
.setPublicPath("/build/")

它认为它适用于开发环境,但当我点击 www.mywebsite.com/app 时在产品环境中我得到了:

 <script src="/build/app.js"></script>

错误地指向:www.mywebsite.com/build/app.js 而不是 www.mywebsite.com/app/build/app.js 但是每当我将 webpack.config.js 更改为:

.setOutputPath("public/app/build/")
.setPublicPath("/app/build/")

它适用于生产环境,但不适用于开发环境。 我在这里做错了什么?

【问题讨论】:

    标签: symfony webpack webpack-encore


    【解决方案1】:

    按照您的问题描述,我假设您的应用程序是在您的dev 环境中的/ 访问的,但在您的prod 环境中的/app 已解释。因此,在调用 .setConfigPath() 时,您必须通过检查您在 webpack 配置中运行的环境来考虑这一点:

    .setPublicPath(Encore.isProduction() ? '/app/build' : '/build')
    

    【讨论】:

    • 好的,谢谢你为我工作。你能否告诉我为什么在我的 prod env symfony twig 路径中​​从 www.website.com/asset/js/app.js 而不是 ww.website.com/app/asset/js/app.js 开始?在树枝中,我进行如下导入:
    • @bad_programmer asset 函数考虑了public-dir 设置并将其用作根,因此没有/app,因为它 根。跨度>
    • 在 composer.json 我将 public-dir 设置为 public/app/。我的应用程序的根是什么?
    • @bad_programmer 再想一想,我不太确定我之前的陈述。当请求进来时,symfony 使用RequestContext 来确定使用 uri 的应用程序根目录。不太确定public-dir 设置因素如何影响它。但内部网络服务器确实使用public-dir 作为应用根目录。
    猜你喜欢
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多