php - 虚拟主机上的 Symfony(文件根问题)

标签 php mod-rewrite symfony1 xampp shared-hosting

我正在 Symfony 和本地主机 (XAMPP) 上开发一个应用程序,我想模拟与在网络服务器上相同的条件。

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 .

最佳答案

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

如果您可以编辑 Web 服务器的配置,请尝试反射(reflect)这一点并将 DocumentRoot 设置为 Web 目录。

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

我不是 mod_rewrite 大师所以我不能提供一个例子(我必须先测试它,但我现在不能这样做)但我相信有人会。也许将 mod_rewrite 标记添加到您的问题中。

更新:未经测试但应该有效。放入 /www 中的 .htaccess 文件:

RewriteEngine on
RewriteBase /

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

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

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

关于php - 虚拟主机上的 Symfony(文件根问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2809778/

相关文章:

php - 在数组中执行一个函数

php - PDO 返回空结果 o 最后结果 Mysql

php - hasManyThrough关系返回错误的SQL语句

php - 从不同目录深度的不同页面动态添加相同的CSS文件

apache - 重写(隐藏)jsp 扩展制动 servlet

mod-rewrite - 在 mod_rewrite html 页面上使用变量?

mod-rewrite - 为什么重写模块在 .htaccess 中不起作用

php - 如何使用symfony和doctrine处理巨大的选择查询?

mysql - Symfony - 数据库链接列

php - 每次循环后内存使用量增加