在一个域上有两个不同的php框架

时间:2013-06-03 07:59:47

标签: php .htaccess zend-framework ubuntu laravel

我们正在将旧版Zend Framework上的旧项目转移到Laravel。为了让生活更轻松,我们考虑同时运行这两个应用程序。

假设我们在Laravel中建立了一个新博客,这是实现这一目标的最简单方法:

http://example.com/blog - >在/var/www/laravel-project/public/index.php中运行index.php http://example.com/something_else - >在/var/www/zend-project/public/index.php中运行index.php

.htaccess解决方案

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^blog/(.+)$ /laravel/public/index.php [NC,QSA,L]
RewriteRule ^assets/(.+) /laravel/public/assets/$1 [NC,QSA,L]

RewriteRule ^images/(.+) /zend/public_html/images/$1 [NC,QSA,L]
RewriteRule ^(.+)$ /zend/public_html/index.php [NC,QSA,L]

2 个答案:

答案 0 :(得分:3)

您可以设置一个仅针对特定细分的重写条件,并将其路由到其中一个框架,如下所示(警告:未经测试)......

# Laravel Requests
RewriteCond $1 ^(blog)
RewriteRule ^ laravel/public/index.php [L]

# Zend Requests
RewriteCond $1 ^(something_else)
RewriteRule ^ zend/public/index.php [L]

# Assets
RewriteCond $1 !^(index.php)
RewriteRule ^ all/public/$0 [L]

对于Laravel,你需要改变public / index.php和其他地方的一些路径,以便它知道它在哪里;我认为这对Zend来说也是一样的吗?

答案 1 :(得分:0)

我的解决方案:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^blog/(.+)$ /laravel/public/index.php [NC,QSA,L]
RewriteRule ^assets/(.+) /laravel/public/assets/$1 [NC,QSA,L]

RewriteRule ^images/(.+) /zend/public_html/images/$1 [NC,QSA,L]
RewriteRule ^(.+)$ /zend/public_html/index.php [NC,QSA,L]