Symfony路由如何工作

时间:2016-08-15 06:14:12

标签: php apache nginx routing port

我是Symfony的初学者并遵循Symfony文档,它有a create page tutorial 在我使用浏览器对此进行测试后创建此内容

我可以使用以下网址访问它

localhost:8000 / lucky / number和

本地主机:8000 / app_dev.php /幸运/数

但是当我尝试使用像

这样的常规方式访问它时

localhost / appname / lucky / number

它给了404,我使用Ubuntu和Apache2 localhost所以我需要知道这个Symfony3路由背后的想法以及为什么我不能使用通常的 localhost / cmstest / lucky / number

由于

3 个答案:

答案 0 :(得分:0)

因为您必须使用web/目录(应用程序的公共根目录,所以只能使用浏览器访问此目录)。

使用server:run时,它会自动使用web/作为您的服务器根目录。通过目录结构访问时,请将其包含在URL:http://localhost/appname/web/lucky/number

答案 1 :(得分:0)

Hewwo PM-Riabel~

你可以在这里粘贴你的虚拟主机配置吗? 你的第一个问题可能就在其中......

您的计算机上只有一个活动的虚拟主机吗?

我猜你会尝试从Linux中查看它(如果不是这样的话,请纠正我)
您应该为主机文件(myurl.com)设置一个虚拟URL,并将其重定向到127.0.0.1(localhost)
然后,您可以将虚拟主机配置为使用此相同的URL。 (当你想要多个项目时,最好这样做)

亲切,
Preciel。

答案 2 :(得分:0)

Symfony doc之后,这就是你的vhost应该是这样的:

<VirtualHost *:80>
    DocumentRoot /var/www/MySymfonyProject/web
    <Directory /var/www/MySymfonyProject/web>
        AllowOverride None
        Order Allow,Deny
        Allow from All
        <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ app.php [QSA,L]
        </IfModule>
    </Directory>
    <Directory /var/www/MySymfonyProject/web/bundles>
        <IfModule mod_rewrite.c>
            RewriteEngine Off
        </IfModule>
    </Directory>
    ErrorLog /var/log/apache2/MySymfonyProject_error.log
    CustomLog /var/log/apache2/MySymfonyProject_access.log combined
</VirtualHost>

现在你有一个干净的vhost,这里有一些细节/说明:

  • 所有终端命令都以admin(sudo)完成。
  • 在终端中,运行此命令a2enmod rewrite
  • 在终端中,由于您不使用任何URL,请务必禁用默认的vhost a2dissite 000-default.conf
  • 在终端中,请务必启用您的网站vhost a2ensite myVhost.conf
  • 确保您的项目目录正确/var/www/MySymfonyProject
  • 在终端中,使用service apache2 restart
  • 重启apache服务
  • 通过localhostlocalhost/app_dev.php访问您的网站(您无需指定捆绑名称)