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

问题描述:

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

这是发展过程中的默认网址,

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

所以,当我去住,我希望能够用这个URL来访问我的symfony的网站,

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

任何想法?

+0

[如何从Symfony2网址中删除“web/app \ _dev.php”?](http://*.com/questions/9669458/how-to-remove-web-app-dev-php -from-symfony2-urls) – 2015-03-19 13:11:43

+0

我碰到过那个,但它没有接受答案。我怎么知道这是正确的答案呢? – oasis 2015-03-19 13:13:07

+3

您是否**尝试**提供的任何解决方案? – 2015-03-19 13:13:59

要隐藏app.php您需要:

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

这些检查,你必须经过:

注意:Symfony2中已经自带存储在默认web目录的.htaccess文件,但如果你不知道你在做什么,最好更换指令在“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)。如果您遇到一些问题,请更新您的帖子,添加所有相关信息,否则您可以在此处提出另一个问题。

+0

非常感谢您的答案! – oasis 2015-03-21 07:21:16

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

但如果你是在托管,你还没有接触到终端部署应用程序,需要找到app/cache/*app/logs/*,并删除他们的内容和之后添加适当的权限(766 | 777)的文件夹。

+0

感谢您的答案。我无法在托管服务器上执行命令行。我不明白这一点 - “需要找到应用程序/缓存/ *和应用程序/日志/ *并删除它们的内容,并在为文件夹添加适当的权限(766 | 777)。” – oasis 2015-03-19 13:18:56

+1

复制完所有代码在服务器上,浏览到文件夹'app/cache /'和'app/logs'删除文件夹中的所有内容,为文件夹添加读写权限 – 2015-03-19 13:29:19