假设我有一个Symfony webapp,它位于我的webroot的子文件夹中
path/to/root/<subfolder>/Symfony/
所以如果我想打电话给我的页面,我必须输入
http://host.tld/<subfolder>/Symfony/web
但是你可以想象我希望每个人都打电话
http://www.host.tld/
我知道我可以使用网络服务器的设置(例如,定义根目录,设置别名等)。因此,我得出两个问题:
我在哪里告诉Symfony这是所有要创建链接的基础?以及
Symfony是否提供本机功能或配置,我可以在不更改网络服务器配置的情况下进行设置?
答案 0 :(得分:4)
专用服务器:
如果您使用专用的debian服务器(使用apache),您可能知道什么是虚拟主机。
您需要创建一个Vhost并将域指向Symfony项目的Web文件夹以封装用户:
nano /etc/apache2/sites-enabled/host.tld:
<VirtualHost *:80>
ServerName host.tld
DocumentRoot /home/sybio/www/mywebsite/Symfony/web
<Directory "/home/sybio/www/mywebsite/Symfony/web">
DirectoryIndex app.php
Options -Indexes FollowSymLinks SymLinksifOwnerMatch
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
然后测试apache配置:
apache2ctl configtest
如果没有错误重启:
apache2ctl restart
就是这样!
共享托管:
在许多托管商中,如OVH,您可以通过管理面板配置目标文件夹(Web目录)! 如果你不能,这很容易:
1)在共享主机的根目录添加Symfony结构
2)通过您的主机使用者(通常为“www”或“公共”)重命名网站/目录
3)覆盖Sf配置,说“web”目录现在命名为“www”:http://symfony.com/doc/current/cookbook/configuration/override_dir_structure.html#override-the-web-directory
答案 1 :(得分:1)
将Symfony文件夹及其所有内容移至其他地方,例如/home/work/Symfony
将Symfony/web/.htaccess
和app.php
复制到http://www.host.tld/
(即www
或public-html
或htdocs
)
修改app.php
并调整require语句以指向/home/work/Symfony/app
运行app/console assets:install http://www.host.tld/
此时,假设您的缓存权限已正确设置,应用应从www.host.tld
运行。路由将在其中生成所需的路径。
无需更改您的网络配置。