【总结】Zend Framework-当web服务器不支持mod_rewrite时页面地址的写法

最近在用Zend Framework 搭建网站时发现了如下两个问题:

1. 当web 服务器不支持mod_rewrite 时怎么办呢,在网上百度了一下发现只要访问时url 跟上'index.php'就又可以正常访问了

2. 当url 后面跟着'index.php'时通过视图助手BaseUrl 获取到的网站基地址也会含有'index.php',这样一来就css、js 以及图片等文件的引入就会出问题

这样一来可知,当web 服务器不支持mod_rewrite 时页面的链接地址是必须要带有'index.php',但是引用css、js 以及图片之类的文件时基地址又是不能包含有'index.php'的,所以自己稍微写了写这种情况下的用于获取页面基地址的两个视图助手,见如下代码:

 

<?php class Zend_View_Helper_BaseUrl { function baseUrl() { $fc = Zend_Controller_Front::getInstance(); $baseUrl = $fc->getBaseUrl(); stripos($baseUrl, '/index.php') !== false && $baseUrl = str_ireplace('/index.php', '', $baseUrl); return $baseUrl; } }

 

<?php /** * 本视图用于在web server不支持mod_rewrite的情况下获取页面基地址 */ class Zend_View_Helper_BaseUrlIndex { function baseUrlIndex() { $fc = Zend_Controller_Front::getInstance(); $baseUrl = $fc->getBaseUrl(); stripos($baseUrl, '/index.php') === false && $baseUrl .= '/index.php'; return $baseUrl; } }

 

当然了,如果web 服务器支持mod_rewrite 的话直接在视图助手中用Zend_Controller_Front::getInstance ()->setBaseUrl() 设置基路径即可

 

另外提一下,如果要使得网站中js、css 以及图片之类的文件可以访问的话,在.htaccess 文件中的重写规则应该改为

 

RewriteEngine On RewriteRule !/.(js|css|jpg|png|gif|ico|htm|html|xml|txt|swf)$ index.php [NC,L]

你可能感兴趣的:(【总结】Zend Framework-当web服务器不支持mod_rewrite时页面地址的写法)