我正在 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/