Symfony2 - 如何从我的网址中删除“web / app_dev.php /”?

时间:2015-03-19 13:04:07

标签: php symfony

当我希望我的symfony网站上线时,如何从我的网址中删除'web / app_dev.php /'?

这是开发期间的默认网址,

http://{localhost}/my-symfony-2/web/app_dev.php/hello/World

因此,当我上线时,我希望能够使用此网址访问我的symfony网站,

http://my-symfony-2.com/hello/World

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

要隐藏app.php,您需要:

  1. 至少可以访问您网站的网络根目录。通常在您的网络托管空间的控制面板上,您可以找到可以上传文件的文件(或者如果您拥有访问凭据,则可以安装和使用免费的FTP客户端,如Filezilla)。
  2. 检查您是否在Apache中安装并启用了mod_rewrite模块,查看“apache2handler”下的phpinfo() ---> “已加载模块”目录(您应该直接通过控制面板获得这种可能性。)
  3. 完成这些检查后,您必须:

    注意:Symfony2已经附带了一个存储在默认网络目录中的.htaccess文件,但是如果您不知道自己在做什么,最好更换“...”中的指令容器IfModule mod_rewrite.c“如下所示。

    1. 使用本机Symfony2 .htaccess或创建一个带有.htaccess扩展名的新文件,并在这些指令中复制/粘贴以隐藏生产中的app.php(不在localhost上) :

      <IfModule mod_rewrite.c>
          RewriteEngine On  
          RewriteCond %{ENV:REDIRECT_STATUS} ^$  
          RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/$2 [R=301,L]
          RewriteRule .? - [L]
          RewriteCond %{REQUEST_FILENAME} -f
          RewriteRule ^(.*)$ app.php [QSA,L]
          RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
          RewriteRule ^(.*) - [E=BASE:%1]    
          RewriteRule .? %{ENV:BASE}app.php [L]
      </IfModule>
      
      # and from the symfony's original
      <IfModule !mod_rewrite.c>
          <IfModule mod_alias.c>
              # When mod_rewrite is not available, we instruct a temporary redirect of
              # the start page to the front controller explicitly so that the website
              # and the generated links can still be used.
          RedirectMatch 302 ^/$ /app.php/
              # RedirectTemp cannot be used instead
          </IfModule>
      </IfModule>
      

      要应用您需要重新启动Apache的修改(通常也会在您的网络空间的控制面板上执行此操作)。

    2. 谷歌搜索了一下,你可以找到大量的例子和教程,但要开始学习,请看看这个简单的.htaccess guide with many useful infos and examplesOfficial URL Rewriting Guide (Apache2.4)。如果您遇到一些问题,请更新您的帖子,添加所有相关的信息,否则您可以在此处提出另一个问题。

答案 1 :(得分:1)

如果您有权访问部署服务器,可以使用终端: php app/console cache:clear --env=prod这将清除prod缓存,您将能够使用标准路由。

但是,如果您要在无法访问终端的托管上部署应用程序,则需要找到app/cache/*app/logs/*并删除其内容并添加适当的权限后(766 | 777) )对于文件夹。