当我希望我的symfony网站上线时,如何从我的网址中删除'web / app_dev.php /'?
这是开发期间的默认网址,
http://{localhost}/my-symfony-2/web/app_dev.php/hello/World
因此,当我上线时,我希望能够使用此网址访问我的symfony网站,
http://my-symfony-2.com/hello/World
有什么想法吗?
答案 0 :(得分:4)
要隐藏app.php
,您需要:
mod_rewrite
模块,查看“apache2handler”下的phpinfo()
---> “已加载模块”目录(您应该直接通过控制面板获得这种可能性。)完成这些检查后,您必须:
注意:Symfony2已经附带了一个存储在默认网络目录中的.htaccess
文件,但是如果您不知道自己在做什么,最好更换“...”中的指令容器IfModule mod_rewrite.c“如下所示。
使用本机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的修改(通常也会在您的网络空间的控制面板上执行此操作)。
谷歌搜索了一下,你可以找到大量的例子和教程,但要开始学习,请看看这个简单的.htaccess guide with many useful infos and examples和Official URL Rewriting Guide (Apache2.4)。如果您遇到一些问题,请更新您的帖子,添加所有相关的信息,否则您可以在此处提出另一个问题。
答案 1 :(得分:1)
如果您有权访问部署服务器,可以使用终端:
php app/console cache:clear --env=prod
这将清除prod缓存,您将能够使用标准路由。
但是,如果您要在无法访问终端的托管上部署应用程序,则需要找到app/cache/*
和app/logs/*
并删除其内容并添加适当的权限后(766 | 777) )对于文件夹。