代码之家  ›  专栏  ›  技术社区  ›  rasx

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

  •  1
  • rasx  · 技术社区  · 16 年前

    有人知道当你改变Zend网站时会发生什么,比如, foo.com/ foo.com/subfolder/ ?我注意到路由中断,或者我没有使用 front_controller.setBaseUrl() 否则就没有效果了。我在Zend网站上找不到任何关于这个问题的正式文档。

    3 回复  |  直到 16 年前
        1
  •  3
  •   jason    16 年前

    最可能的原因是你需要设置 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 自动地。尝试 显式设置。如果上述对重写规则的更改不起作用,则仅尝试重写。

    你可以,在任何时候 巴苏 确定的请求如下:

    var_dump(Zend_Controller_Front::getInstance()->getBaseUrl());
    
        2
  •  0
  •   Byron Whitlock    16 年前

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

        3
  •  0
  •   Sampson    16 年前
    推荐文章