【发布时间】:2009-07-01 19:51:44
【问题描述】:
有没有人知道当您将 Zend 站点从 foo.com/ 更改为 foo.com/subfolder/ 时会发生什么?我注意到路由中断,或者我没有正确使用front_controller.setBaseUrl(),或者它没有效果。我在 Zend 站点上找不到任何关于此问题的正式文档。
【问题讨论】:
标签: php zend-framework
有没有人知道当您将 Zend 站点从 foo.com/ 更改为 foo.com/subfolder/ 时会发生什么?我注意到路由中断,或者我没有正确使用front_controller.setBaseUrl(),或者它没有效果。我在 Zend 站点上找不到任何关于此问题的正式文档。
【问题讨论】:
标签: php zend-framework
问题的最可能原因是您需要在.htaccess 文件中设置RewriteBase 参数。
假设您的重写规则如下所示:
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。尝试 not 显式设置它。如果上述对重写规则的更改不起作用,则仅尝试覆盖。
您可以随时获取被确定为以下请求的baseUrl:
var_dump(Zend_Controller_Front::getInstance()->getBaseUrl());
【讨论】:
您需要确保将 /newfolder/ 添加到配置中的所有 set_include_path 语句。那么 setBaseURl 应该可以正常工作了。
【讨论】: