在Symfony2中定义根URL

时间:2013-08-08 14:54:29

标签: symfony webserver friendly-url

假设我有一个Symfony webapp,它位于我的webroot的子文件夹中

path/to/root/<subfolder>/Symfony/

所以如果我想打电话给我的页面,我必须输入

http://host.tld/<subfolder>/Symfony/web

但是你可以想象我希望每个人都打电话

http://www.host.tld/

我知道我可以使用网络服务器的设置(例如,定义根目录,设置别名等)。因此,我得出两个问题:

  1. 我在哪里告诉Symfony这是所有要创建链接的基础?以及

  2. Symfony是否提供本机功能或配置,我可以在不更改网络服务器配置的情况下进行设置?

2 个答案:

答案 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)

  1. 将Symfony文件夹及其所有内容移至其他地方,例如/home/work/Symfony

  2. Symfony/web/.htaccessapp.php复制到http://www.host.tld/(即wwwpublic-htmlhtdocs

  3. 修改app.php并调整require语句以指向/home/work/Symfony/app

  4. 运行app/console assets:install http://www.host.tld/

  5. 此时,假设您的缓存权限已正确设置,应用应从www.host.tld运行。路由将在其中生成所需的路径。

    无需更改您的网络配置。