1

我一直在构建基于 Symfony 框架的开发环境中的网站,现在是时候将其部署到实时网站了,在开发环境中我们运行命令php app/console server:run来运行网站,但我不确定需要做什么让用户在实时服务器上看到网站内容,在我将代码上传到实时服务器后,我看到的是 Symfony 的根目录结构,我已经完成了如何部署 Symfony 应用程序,我正在摸不着头脑,因为必须有更重要的是,因为遵循这些步骤后没有任何区别,我仍然看到目录结构。

我确实注意到,当我单击 web 文件夹时,我看到了该网站,因此我创建了以下.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>
4

4 回答 4

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

全部完成

于 2014-09-17T12:40:53.210 回答
1

我不知道它是如何专业地完成的,因为我不使用 symfony,但我会告诉你我在 Linux 上测试时是如何做到的。

假设你有你的www目录/home/user/www/(这并不重要)。我会将整个 symfony 目录(具有所有目录结构)放到其他目录中(比如说/home/user/applications/my-symfony-webpage- 最后一个是具有 symfony 文件结构的目录)。

要使其正常工作,您需要做的最后一件事是创建一个指向 from /home/user/www/to的符号链接/home/user/applications/my-symfony-webpage/web

可以用这个命令来完成:(ln -s /home/user/applications/my-symfony-webpage/web /home/user/www/我认为你需要先删除 www 目录,如果它只是用于 symfony 安装)。

这是我的解决方案,我怀疑它是唯一的,可能不是最好的。我认为您可以使用 apache 创建重定向,以将某些域定向到文件结构中的某个目录(在您的情况下web,当然是目录)。你可以在网上查一下。

于 2014-09-17T11:06:51.630 回答
1

您必须配置您的 Apache 以将您的项目文件夹指向web文档根目录。

您可以在此处找到有关配置服务器的信息:配置 Web 服务器 (The Symfony CookBook)

于 2014-09-17T11:31:28.047 回答
1

在遵循所有如何部署 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>
于 2014-09-18T07:53:56.487 回答