2011-01-24 61 views
3

我有一個zend站點,其中DocRoot設置爲public /和URL爲 (http://dothat.com/controllerA/action9/) - 哪個工作正常。zend站點需要別名

我還需要在運行在同一文件夾上的同一臺服務器上運行 (http://dothat.com/now/controllerA/action9/)的副本。

(給定的URL就是例子)

請建議上怎麼能這樣不破壞Zend的設置本身來完成。

回答

2

我個人只是在您的Bootstrap中執行一個簡單的Zend路由。

例子:

protected function _initRoutes() 
{ 
    $this->bootstrap('frontController'); 

    $frontController = Zend_Controller_Front::getInstance(); 

    $nowRoute = new Zend_Controller_Router_Route("now/:controller/:action"); 

    $frontController->getRouter()->addRoute("now", $nowRoute); 
} 

航線的Zend是非常強大的,有趣的設定。我實際上有一個外部的.ini文件,使它更容易設置,甚至是環境感知。

0

怎麼樣的想法:

在Apache中的別名(如果它是你正在使用的http服務器)

Alias /now /path/to/zend/public 
<Directory /path/to/zend/public>  
    SetEnv APPLICATION_ENV development 
    ... 
</Directory> 

而且你要照顧.htacces太

... 
RewriteRule ^.*$ /now/index.php [NC,L] 

例如與重寫規則中的路徑的另一個環境變量..

+0

當我用別名,其重寫規則/ Cond,我無法正確獲取。該規則應該尊重現有網站(/)以及新網站(/現在)。 – thevikas 2011-01-24 12:20:05

2

它的工作對我來說

/etc/httpd/conf.d/zendproject.conf

Alias /zendproject/ /var/www/vhosts/zendproject/public/ 

<Directory "/var/www/vhosts/zendproject/public/"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride All 
    Order allow,deny 
    Allow from All 
</Directory> 

公共/的.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ /zendproject/index.php [NC,L]