我一直在Symfony框架之上的开发环境中开发一个网站,现在是时候将其部署到实时网站了,在开发环境中,我们运行命令php app/console server:run
来运行网站,但我不确定需要做些什么才能让用户在实时服务器上看到网站内容,在我将代码上传到实时服务器后,我看到的只是Symfony的根目录结构,我已经学习了如何部署Symfony应用程序,我很挠头,因为它还有更多内容,因为在遵循这些步骤后,没有任何区别,我仍然看到目录结构。
我确实注意到,当我点击网络文件夹时,我看到了网站,所以我创建了以下.htaccess
文件,它可以工作,但URL看起来像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>
如果您正在运行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
全部完成
我不知道它是如何专业地完成的,因为我不使用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
目录)。你可以在网上查。
您必须将Apache配置为将项目文件夹web
指向文档根目录。
您可以在此处找到有关配置服务器的信息:配置Web服务器(The Symfony CookBook)
在完成了所有如何部署Symfony应用程序之后,在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>