【问题标题】:Symfony2 - How can I remove 'web/app_dev.php/' from my url?Symfony2 - 如何从我的网址中删除“web/app_dev.php/”?
【发布时间】:2015-05-22 14:42:19
【问题描述】:

当我希望我的 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

有什么想法吗?

【问题讨论】:

  • 我遇到了那个,但它没有接受的答案。那我怎么知道这是正确的答案呢?
  • 您是否尝试提供的任何解决方案?
  • @oasis 如果您可以访问 Web 根目录,则可以在 .htaccess 文件中使用这些指令(仅涉及删除部分 url 的指令),也可用于生产站点。跨度>
  • @oasis 是的,您需要添加一个 .htaccess 文件。现在我不能,但是如果有人不这样做,我稍后会写答案。

标签: php symfony


【解决方案1】:

要隐藏app.php,您需要:

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

在这些检查之后,您必须:

注意:Symfony2 已经附带了一个 .htaccess 文件存储在默认的 web 目录中,但是如果你不知道你在做什么,最好替换 "IfModule mod_rewrite" 中的指令包含.c" 与如下所示。

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

    <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(这通常也是在您的网络空间的控制面板上进行的)。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回答。我无法在托管服务器上执行命令行。我不明白这一点 - need to find the app/cache/* and app/logs/* and remove their content and after add the proper rights (766|777) for the folders.
    • 复制服务器上的所有代码后,浏览到文件夹app/cache/app/logs删除文件夹中的所有内容,为文件夹添加读写权限
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2014-06-24
    • 2021-03-17
    • 2020-08-13
    • 1970-01-01
    相关资源
    最近更新 更多