最近很奇怪的遇到一个问题,就在开启了后台url_write和nginx配置忽略index.php之后,在访问网站后台的时候,依旧出现自动补全index.php的问题,这样就导致后台无法打开访问。经研究发现是在centos系统下才会出现此种情况,在Ubuntu环境中则不会。代码明明都是一样的,这是典型的环境不同导致的偶发性异常。最后没办法的办法是对系统内置的Model进行重写,具体是:
app\code\core\Mage\Core\Model\Store.php中的640行_updatePathUseRewrites()方法:
protected function _updatePathUseRewrites($url)
{
if (!$this->getConfig(self::XML_PATH_USE_REWRITES) || !Mage::isInstalled()) {
$indexFileName = $this->_isCustomEntryPoint() ? 'index.php' : basename($_SERVER['SCRIPT_FILENAME']);
$url .= $indexFileName . '/';
}
return $url;
}
切记不可直接改动系统core里面的model文件,可以使用重写机制,复制该文件到app\code\local\Mage\Core\Model\Store.php,然后单独修改该方法即可。