将站点更改为子文件夹时,Zend Framework路由表会发生什么?

时间:2009-07-01 19:51:45

标签: php zend-framework

是否有人确切知道您在foo.com/更改为foo.com/subfolder/时的Zend网站会发生什么?我注意到路由中断并且我没有正确使用front_controller.setBaseUrl()或者它没有效果。我无法在Zend网站上找到关于此问题的任何正式文档。

3 个答案:

答案 0 :(得分:3)

问题的最可能原因是您需要在RewriteBase文件中设置.htaccess参数。

假设您的重写规则如下所示:

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

假设您要将网站移至subfolder子文件夹,请在RewriteEngine on下方的重写规则中添加以下行。

RewriteBase /subfolder

您的完整重写规则应如下所示:

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

PS:前端控制器/请求对象/路由器将99%的时间自动正确地确定baseUrl。尝试明确设置它。如果您的重写规则的上述更改不起作用,则只会尝试覆盖。

您可以随时通过以下方式获取已确定的baseUrl请求:

var_dump(Zend_Controller_Front::getInstance()->getBaseUrl());

答案 1 :(得分:0)

答案 2 :(得分:0)

您需要确保将/ newfolder /添加到配置中的所有set_include_path语句中。然后setBaseURl应该可以正常工作。