我一直在构建在Symfony框架之上的开发环境中的网站上工作,现在是时候将它部署到实时网站了,在开发环境中我们运行命令php app/console server:run
来运行网站但我是不知道需要做什么才能让用户在实时服务器上看到网站内容,在我将代码上传到实时服务器后,我看到的是Symfony的根目录结构,我已经通过了How to Deploy a Symfony Application而我正在抓我的因为要遵循这些步骤没有区别,我仍然会看到目录结构。
我注意到当我点击网络文件夹时,我看到网站,所以我创建了以下.htaccess
文件,但该网址看起来像www.domain.com/web
我怎么能做到www.domain.com
}}
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>
如果我能在这里得到一些帮助,我将非常感激,如果它有助于我尝试使用Apache在基于Linux的服务器上进行部署。
解
在.htaccess
文件中添加以下内容,它将起作用,因为这解决了我的问题,请记得清除浏览器缓存
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]
</IfModule>
答案 0 :(得分:2)
如果您正在运行ubuntu,请执行以下操作
sudo nano /etc/apache2/sites-enabled/000-default.conf
将文档根目录更改为并保存
DocumentRoot /var/www/html/web
然后运行
sudo service apache2 restart
然后运行
cd /var/www/html
php app/console cache:clear --env=prod --no-debug
全部完成
答案 1 :(得分:1)
我不知道它是如何专业的,因为我不使用symfony,但我会告诉你我在Linux上测试时是如何做到的。
假设您在www
中有/home/user/www/
目录(这并不重要)。我会将整个symfony目录(包含所有目录结构)放到其他目录中(比如说/home/user/applications/my-symfony-webpage
- 最后一个是你的symfony文件结构目录)。
要使其发挥作用,您需要做的最后一件事是创建一个符号链接,该符号链接将从/home/user/www/
指向/home/user/applications/my-symfony-webpage/web
。
可以使用此命令完成:ln -s /home/user/applications/my-symfony-webpage/web /home/user/www/
(我认为如果只是为了安装symfony,你需要先删除www目录。)
这是我的解决方案,我怀疑它是唯一一个,可能不是最好的一个。我认为您可以使用apache创建重定向,以将某些域定向到文件结构中的某个目录(当然,在您的情况下为web
目录)。你可以在网上查找。
答案 2 :(得分:1)
您必须将Apache配置为将项目文件夹web
指向文档根目录。
您可以在此处找到有关配置服务器的信息:Configuring a Web Server (The Symfony CookBook)
答案 3 :(得分:1)
在完成所有How to deploy a Symfony App之后,在Symfony应用程序的根目录中创建.htaccess
文件并在其中添加以下代码,这就解决了我的问题。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]
</IfModule>