我在domainA.com上有一个ZF网站,我想将domainB.com别名为:domainA.com/photos/album,以便该相册成为domainB的根目录。
如何实现这一目标?
答案 0 :(得分:1)
此处的第一步是使用mod_rewrite
将URL重写为正确的路由。您现有的.htaccess
根页面顶部的内容应该有效:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} =domainB.com [NC]
RewriteCond %{REQUEST_URI} !^/photos/album
RewriteRule .* /photos/album/$0 [L]
如果/photos/album/
后没有指定路径,则会重定向到domainB.com
。如果我没记错的话,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']);
就可以了。只需在主机上调整此操作,并希望它们都能正常运行。