【问题标题】:Symfony2 installing in a sub-directorySymfony2 安装在子目录中
【发布时间】:2013-02-15 23:27:35
【问题描述】:

我知道以前有人问过这个问题,但由于某种原因,它对我不起作用。

我正在尝试将 symfony2 安装在子文件夹中(即:http://www.mydomain.com/myapp),但是遇到了几个问题:

看来我必须修改所有路由以指向此子路径 IE:

fos_user_group:
    resource: "@FOSUserBundle/Resources/config/routing/group.xml"
    prefix: /myapp/group

..它确实完成了路由工作。

然而,无论如何,即使在 symfony 文档中,它声明assetic 将确定正确的路径(http://symfony.com/doc/current/book/templating.html#linking-to-assets),它仍然试图从根域 IE 中定位资产:

http://www.mydomain.com/bundles/acmedemobundle/js/script.js

我基本上在谷歌上的每个链接都查看了相关问题,我试过RewriteBase /myapp、RewriteBase /myapp/web,但都无济于事。

有人可以帮我吗?这似乎很疯狂,很难将我的 URL 和资产正确路由到子文件夹。为了可移植性(即使资产问题以某种方式解决),难道不应该有办法在不修改我所有路线的情况下做到这一点吗?

顺便说一句,我还没有尝试在 unix 服务器上尝试这个。目前所有测试都在 wampserver 上完成。

【问题讨论】:

  • 您是否能够找到如何在不为所有路由设置前缀的情况下使其工作?

标签: php .htaccess symfony


【解决方案1】:

您可以在路由器对象中设置基本 url,也许这样可以解决您的问题?

$this->getContainer()->get('router')->getContext()->setBaseUrl('/myapp');

如果你这样做,你不应该在所有路由前加上子目录的名称。

【讨论】:

  • 路由并不是真正的问题。如果我必须在我的路由中设置一个前缀,我会(尽管它不是最佳的)。问题主要是资产,事实上,为了可移植性,我的应用程序中都有所有这些子目录引用。
【解决方案2】:

我不知道这是否仍然是您的问题,但它可能对其他人有所帮助。我相信你应该改变你的 config.yml 或 config_dev.yml (取决于环境)

对于资产设置这个(参见“模板”部分):

framework:
router:
    resource: "%kernel.root_dir%/config/routing_dev.yml"
    strict_requirements: true
profiler: { only_exceptions: false }
#set default asset root
templating:
    assets_base_urls: 
        http: [ /path/to/web ]
        ssl:  [ /path/to/web ]

其中 /path/to/web 是 bundle 文件夹的父文件夹。

【讨论】:

    【解决方案3】:

    我在本地环境中的解决方案是在 app/config/config.yml 中添加以下代码

    framework:
        templating:
            assets_base_urls:
                http: "http://localhost/symfony_folder/"
                ssl: "http://localhost/symfony_folder/"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      • 2011-05-15
      • 1970-01-01
      相关资源
      最近更新 更多