【问题标题】:Symfony on virtual host (document root problem)虚拟主机上的 Symfony(文档根问题)
【发布时间】:2011-02-18 01:57:56
【问题描述】:

我正在 Symfony 和 localhost (XAMPP) 上开发一个应用程序,我想模拟与 web 服务器上相同的条件。

web服务器配置如下:

/www   => mydomain.com
/foo   => foo.mydomain.com
/bar   => bar.mydomain.com
...

我将把我的 Symfony 应用程序放入 /www 目录中,这样就会有:

/www
/www/apps
/www/apps/frontend
/www/apps/frontend/...
/www/apps/backend
/www/apps/backend/...
/www/cache
/www/config
... and so on...
/www/web

问题是文档根目录仍然设置为/www 目录,但 Symfony 期望它位于/www/web
当然,如果我打电话给http://mydomain.com/web,它会起作用,但我想你明白这是一个安静愚蠢的解决方案。

所以我的问题是:有什么方法可以使用 .htaccess 或其他方式更改/绕过默认文档根设置?

编辑:I solved it

【问题讨论】:

  • 如果您解决了自己的问题,请回答您的问题并将此问题标记为已回答。

标签: php mod-rewrite symfony1 xampp shared-hosting


【解决方案1】:

改变 symfony 期望你的目录被命名的方式:

// config/ProjectConfiguration.class.php
class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->setWebDir($this->getRootDir().'/www/or/whatever/directory');
  }
}

【讨论】:

    【解决方案2】:

    如果你掌握了 apache 配置,最好在你的 virtualHost 配置中将文档根目录从 /www 移动到 /www/web 并允许 php(如果受 open_basedir 配置指令限制)访问整个 /www目录。

    【讨论】:

    • 这正是我做不到的。我从未见过任何可以修改 apache 配置的共享虚拟主机 :)
    • 好的,我们曾经对共享主机所做的是删除公共 web 目录,将所有 sf 项目放在共享主机根目录中,然后使用指向 web/ 目录的符号链接重新创建 www 目录,但不知道是否可以添加符号链接
    【解决方案3】:

    我对 Symfony 了解不多,但 /web 应该是文档根目录。出于安全原因,所有其他目录都应位于文档根目录之外,而另一种则是避免 URL 中的 /web 部分。但看起来你已经知道了。

    如果您可以编辑网络服务器的配置,请尝试反映这一点并将DocumentRoot 设置为网络目录。

    如果您不能这样做:无法更改.htaccess 文件中的DocumentRoot,但可以重写所有请求,以便它们在内部使用mod_rewrite 转到/web。这很笨拙,但如果你不能影响DocumentRoot,这可能是最好的解决方案。

    我不是 mod_rewrite 大师,所以我无法提供示例(我必须先对其进行测试,但我现在不能这样做)但我相信有人会。也许在您的问题中添加mod_rewrite 标签。

    更新:未经测试,但应该工作。放入.htaccess文件/www:

    RewriteEngine on
    RewriteBase /
    
    RewriteCond %{REQUEST_URI} !^/web/ 
    RewriteRule .* /web/%1 [QSA]
    

    您当然需要更改配置文件以使用http://www.domain.com/ 而不是http://www.domain.com/web/

    我不能说这是否会干扰 Symfony 端的任何其他 .htaccess 规则 - 你必须尝试一下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-16
      • 2012-01-20
      • 2011-04-24
      • 2012-02-27
      • 2015-09-05
      • 2011-06-30
      • 2015-10-06
      • 2011-05-20
      相关资源
      最近更新 更多