Symfony2 - 如何从我的 url 中删除 'web/app_dev.php/'?

Symfony2 - How can I remove 'web/app_dev.php/' from my url?

当我想让我的 symfony 网站上线时,如何从我的 url 中删除 'web/app_dev.php/'?

这是开发过程中的默认值url,

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

所以当我上线时,我希望能够使用这个 url 访问我的 symfony 网站,

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

有什么想法吗?

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

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

要隐藏 app.php 您需要:

  1. 至少可以访问您网站的网络根目录。通常在您的虚拟主机 space 的控制面板上,您可以找到可以上传文件的地方(或者如果您有访问凭据,您可以安装和使用免费的 FTP 客户端,例如 Filezilla).
  2. 检查您是否在 Apache 中安装并启用了 mod_rewrite 模块,查看 "apache2handler" 下的 phpinfo() ---> "Loaded Modules" 目录(您应该有这种可能性直接通过控制面板)。

完成这些检查后,您必须:

注意:Symfony2 已经带有存储在默认 Web 目录中的 .htaccess 文件,但如果您不知道自己在做什么,最好替换"IfModule mod_rewrite.c" 中包含如下所示的指令。

  1. 使用本机 Symfony2 .htaccess 或创建一个新文件,扩展名为 .htaccess 并且在这些指令中包含 copy/paste 以隐藏 app.php生产(不在本地主机上):

    <IfModule mod_rewrite.c>
        RewriteEngine On  
        RewriteCond %{ENV:REDIRECT_STATUS} ^$  
        RewriteRule ^app\.php(/(.*)|$) %{CONTEXT_PREFIX}/ [R=301,L]
        RewriteRule .? - [L]
        RewriteCond %{REQUEST_FILENAME} -f
        RewriteRule ^(.*)$ app.php [QSA,L]
        RewriteCond %{REQUEST_URI}:: ^(/.+)(.+)::$
        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 的修改(这通常在您的网络 space 的控制面板上完成)。

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