【问题标题】:What happens to the Zend Framework routing tables when you change the site to a subfolder?当您将站点更改为子文件夹时,Zend Framework 路由表会发生什么情况?
【发布时间】:2009-07-01 19:51:44
【问题描述】:

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

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    问题的最可能原因是您需要在.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());
    

    【讨论】:

    • 我使用的是较旧的 Zend RewriteRule: RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php 甚至没有使用 Rewritebase 我看到了改进!干得好!
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      相关资源
      最近更新 更多