【问题标题】:Deploy symfony2 into a folder将 symfony2 部署到一个文件夹中
【发布时间】:2013-04-24 08:30:23
【问题描述】:

作为 symfony1.4 的开发者,我正在努力学习 Symfony2。

现在,我不想在一切正常的本地机器上进行尝试,今天我想让我的测试站点在我的服务器上可用。但我不想将它部署在真实站点或真实子域上。

这是我的问题:如何在不修改虚拟主机的情况下将此测试部署在子文件夹上?!

假设我有一个可用的站点www.example.com,但我想在www.exaple.com/mysymfonytest 此处提供我的 symfony 测试(并且工作正常)

有人已经这样做了吗?

谢谢...

【问题讨论】:

  • 您是否尝试过将应用程序放在子文件夹中?它应该可以工作。
  • 不,它不起作用! Example.com/mysubfolder/web/app.php 重定向到 example.com
  • 它可以在我的电脑上运行,你能告诉我们你的网络服务器(apache?)网站配置吗?

标签: symfony web-deployment


【解决方案1】:

在我看来,这并不是一个真正与 symfony 相关的问题。

根据您的网络服务器,您可以配置一个别名,该别名应该指向哪个 url。

在 Apache 中,您指定您的文档根目录,将您的 sf2 安装放在其中,然后定义一个别名,即 /mysymfonytest 指向该文档根目录。

或者,您可以指定您的文档根目录,保留 url 并为 symfony 中的所有路由定义一个前缀,您可以在路由配置中这样做。

我强烈建议您配置您的网络服务器。

例如在apache中:

<VirtualHost *:80>
    DocumentRoot /var/www/mysymfonytest
    Alias /mysymfonytest /var/www/mysymfonytest
    <Directory /var/www/mysymfonytest/web>
            AllowOverride None
            Order allow,deny
            Allow from all

            #Allow from <SUPPORT>
            RewriteEngine On
            RewriteBase /mysymfonytest
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ /app.php [QSA,L]
    </Directory>
</VirtualHost>

或者,如果您无法添加 VHost: How to add a prefix to all my routes

【讨论】:

  • 好吧,虚拟主机不是我可以编辑的,所以……如果我只能修改 symfony 文件?
【解决方案2】:

在/(根目录)下创建一个子目录,命名为mysymfonytest,然后把你的symfony2项目放到mysymfonytest。

添加一个.htaccess文件到mysymfonytest文件夹并放入:

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ web [L]

</IfModule>

或者你可以只创建一个名为index.html 的文件并使其指向app.php

【讨论】:

  • 我已经尝试过这个解决方案,但应该有一些调整以使其正常工作......
【解决方案3】:

如果您只在共享主机上运行。您可以使用 .htaccess 来使用覆盖配置。询问您的提供者是否允许覆盖,然后向他们提供脚本或告诉他们您想要什么。希望这涵盖在您的托管支持中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多