我正在尝试将Apache配置为在同一个域下拥有不同的 symfony 项目(每个项目都有自己的框架安装),但我无法使用文件夹来运行它。
这就是我想要的:
我可以使用子域工作,但不是我的首选解决方案,因为我最终拥有疯狂的子域名,如:
我在Apache中使用此配置使其适用于子域:
<VirtualHost 127.0.0.1:8080>
ServerName projectone.mydomain.com
DocumentRoot "/home/projectone/web"
DirectoryIndex frontend.php
<Directory "/home/projectone/web">
Options -Indexes IncludesNOEXEC FollowSymLinks -MultiViews
AllowOverride None
Allow from All
RewriteEngine On
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ frontend.php [QSA,L]
</Directory>
Alias /sf /home/projectone/lib/vendor/symfony/data/web/sf
<Directory "/home/projectone/lib/vendor/symfony/data/web/sf">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
关于如何实现文件夹解决方案的任何想法?
提前致谢, Eneko
答案 0 :(得分:2)
我一直这样做。这是相关的Apache配置。我还为每个symfony应用设置了custom error handlers。
# make sure your symfony install dir is available
<Directory "/var/www/symfony1.4">
AllowOverride All
Allow from all
</Directory>
# each app under http://mysite/myapp gets a section like this
Alias /myapp/sf "/var/www/symfony1.4/data/web/sf"
Alias /myapp "/var/www/vhosts/myvhost/sf_apps/myapp/web"
<Directory "/var/www/vhosts/myvhost/sf_apps/myapp/web">
AllowOverride All
Allow from all
ErrorDocument 404 /myapp/default/error404
ErrorDocument 500 /myapp/myThemePlugin/errors/error500.php
</Directory>
您还需要在web/.htaccess
文件中破解此行。
# uncomment the following line, if you are having trouble
# getting no_script_name to work
RewriteBase /myapp
答案 1 :(得分:1)
我已经尝试过这段代码并且似乎有效。由于我没有测试它,我不确定这是否没有错误,但它可以暗示你。
<VirtualHost 127.0.0.1:8088>
Alias /badger /home/amqs/proyectos/sales/nuevo/salesprime/web
DocumentRoot "/home/amqs/proyectos/sales/nuevo/salesprime/web"
DirectoryIndex frontend_dev.php
<Directory "/home/amqs/proyectos/sales/nuevo/salesprime/web">
AllowOverride All
Allow from All
</Directory>
Alias /sales /home/amqs/proyectos/sales/salesprime2/web
DocumentRoot "/home/amqs/proyectos/sales/salesprime2/web"
DirectoryIndex frontend_dev.php
<Directory "/home/amqs/proyectos/sales/salesprime2/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
答案 2 :(得分:0)
您可以使用ProjectConfiguration中的setWebDir方法指定要在每个项目中提供的唯一Web目录。这将允许您在任何目录(/ home / projectone)中托管项目文件(应用程序,配置,库,插件等),同时将文件正常移动到完全不同的位置(/ home / MYDOMAIN /网络/ projectone)。您可以选择从config/ProjectConfiguration.class.php
中的根ProjectConfiguration调整整个项目的Web目录:
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
$this->setWebDir('/home/mydomain/web/projectone');
}
}
或者如果您希望每个应用程序都有一个不同的Web目录(/ projectone /用于前端和/ projectone / backend /用于后端),您可以设置每个应用程序的Web目录apps/myapp/config/myappConfiguration.class.php
中的应用程序配置:
class myappConfiguration extends sfApplicationConfiguration
{
public function configure()
{
$this->setWebDir('/home/mydomain/web/projectone');
}
}
希望有所帮助。
答案 3 :(得分:0)
尝试此配置。
适用于 symfony 2和3。
<VirtualHost 127.0.0.1:8080>
Alias /app1 /var/www/public_html/app1/web
DocumentRoot "/var/www/public_html/app1/web"
DirectoryIndex app.php
<Directory "/var/www/public_html/app1/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
文档:https://symfony.com/doc/3.3/setup/web_server_configuration.html