加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 嵌套目录中的Symfony 2项目

发布时间:2020-12-13 17:25:19 所属栏目:PHP教程 来源:网络整理
导读:我需要在生产服务器上的嵌套目录中部署Symfony 2项目.实际上,这意味着所有URL都以/ subdirectory / path为前缀,即 http://host.com/subdirectory/project/web/app.php/survey 我不需要URL重写,我不打算设置它.只有通过上述网址访问时,该应用才有效. 我遇到的
我需要在生产服务器上的嵌套目录中部署Symfony 2项目.实际上,这意味着所有URL都以/ subdirectory / path为前缀,即

http://host.com/subdirectory/project/web/app.php/survey

我不需要URL重写,我不打算设置它.只有通过上述网址访问时,该应用才有效.

我遇到的问题是路径和资产Twig函数生成的所有链接都是相对于服务器根目录(/),而不是项目所在的子目录(/子目录/). Symfony 2中是否有任何配置参数覆盖全局的相对路径?

我尝试通过添加HTML标记解决该问题,但它不适用于链接.

更新:我欠你更多细节.我正在使用其mod_rewrite版本运行IIS,因此您的部分建议可能仍然有效.

更新:理想情况下,我希望看到一个在AppKernel对象上设置root目录的解决方案 – 方法AppKernel :: setRootDir()已经存在以补充现有的AppKernel :: getRootDir().

解决方法

奇怪…使用默认配置,路径/资产应该处理子目录.你是否已经开始使用symfony发行版进行了尝试?在localhost上,我主要以这种方式使用它.
你介意发布你的配置文件吗?

无论如何…
对于您可以尝试配置的资产路径:

#config.yml
templating:
  assets_base_urls: { http: "http://yoursite.com/dir1",ssl: "https://yoursite.com/dir1" }

(http://symfony.com/doc/current/reference/configuration/framework.html#assets-base-urls)

对于路由器,您应阅读:http://symfony.com/doc/current/cookbook/console/sending_emails.html#configuring-the-request-context-globally
它可以为您提供有关更改路由器上下文的一些想法:

# app/config/parameters.yml
parameters:
  router.request_context.host: example.org
  router.request_context.scheme: http
  router.request_context.base_url: my/path

无论如何 – 根据请求信息自动设置上下文.尝试调试:

$context = $this->getContainer()->get('router')->getContext();
// you should be mainly interested in:
$context->getBaseUrl();

可以轻松创建监听器类,如果它出错,将手动设置基本URL:

class RouterContextListener {

    protected $router;

    public function __construct(RouterInterface $router)
    {
        $this->router = $router;
    }

    public function onKernelRequest(Event $event)
    {
        $this->router->setBaseUrl('somedir');
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读