我在domainA.com上有一個ZF網站,我想將domainB.com別名爲:domainA.com/photos/album,這樣這個相冊就是domainB的根。Alias Domain to Zend Directory
這樣做可能會怎樣?
我在domainA.com上有一個ZF網站,我想將domainB.com別名爲:domainA.com/photos/album,這樣這個相冊就是domainB的根。Alias Domain to Zend Directory
這樣做可能會怎樣?
此處的第一步是使用mod_rewrite
將URL重寫爲正確的路線。像你exisitng .htaccess
根頂部以下的東西應該工作:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} =domainB.com [NC]
RewriteCond %{REQUEST_URI} !^/photos/album
RewriteRule .* /photos/album/$0 [L]
如果domainB.com
後沒有指定路徑這會重定向到/photos/album/
。如果我沒有記錯的話,Zend Framework對你的控制器/操作是否以斜線結束沒有挑剔,所以這應該沒問題。如果因爲某種原因需要/photos/album
,我也有一個解決方案,但是如果不需要,它會過度殺傷。
稍後,您的規則集將URL轉換爲index.php
,Zend Framework執行其路由。然而,Zend Framework的路由默認方式是使用REQUEST_URI
,這恰好不是我們在這種情況下想要的(這將是在domainB.com
之後傳遞的任何內容,而不是我們重寫該請求的內容)。我們實際上需要使用REDIRECT_URL
,這是由我們的新RewriteRule
設置。
的controller request documentation描述此情形(種),並解釋說,你可以使用Zend_Controller_Request_Apache404
作爲一個活動的請求對象以獲得正確的路由信息:
$request = new Zend_Controller_Request_Apache404();
$front->setRequest($request);
我相當肯定,你可以也只是得到當前的請求對象,並調用
$request->setRequestUri($_SERVER['REDIRECT_URL']);
就可以了。只需在主機上進行此操作,並希望它應該都能正常工作。
我不知道是否一個更容易的解決方案(當然會被接受),將只允許domainB.com訪問/照片/相冊 - 所有其他請求之外的這個網址將被拒絕和/或重定向回到/ photos /專輯。 – doremi 2010-08-19 18:55:28
@Joshua McGinnis - 我猜這取決於,真的。我個人傾向於採用這種方法來實現URL的「清潔」,因爲一旦建立起來,您就不必惹惱它了。按照您的建議執行重定向,可以避免不必修改後端部分,因此在這種情況下,更容易跟蹤負責完成該工作的內容。 – 2010-08-19 19:19:28
通過爲domainB.com指定一個指向'.../photos/album'的網頁根。這是一個serverfault.com問題 - 投票遷移 – 2010-08-18 13:46:32
/照片/相冊不是一個真正的目錄 - 它是一個控制器和操作傳遞給index.php文件 - 但即使如此,我認爲它是一個重寫規則可以通過這些到索引自動? – doremi 2010-08-18 13:48:41
這使它更有趣一點。這實際上相當可行;但首先,你是否認爲,即使應用程序認爲它位於'domainA.com/photos/album'(根據已翻譯的控制器路由),您對該部分的看法是否需要生成與'domainB'有關的鏈接? – 2010-08-18 14:09:53