当magento的一个页面不存在时 会显示一个404页面,是在
System => Configure => Web => Default pages =>
Default No-route URL : cms/index/noRoute
CMS No Route Page : 404 page
1) 在 app/code/comunity下创建module
Voyageone
Cms
controllers
IndexController.php
etc
config.xml
IndexController.php
<?php
require_once Mage::getModuleDir('controllers', 'Mage_Cms').DS.'IndexController.php';
class Voyageone_Cms_IndexController extends Mage_Cms_IndexController
{
/**
* Render CMS 404 Not found page
*
* @param string $coreRoute
*/
public function noRouteAction($coreRoute = null)
{
mage :: log(Mage::helper('core/url')->getHomeUrl().' first');
Mage::app()->getFrontController()->getResponse()
->setRedirect(Mage::helper('core/url')->getHomeUrl())
->sendResponse();
}
}
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Voyageone_Cms>
<version>0.1</version>
</Voyageone_Cms>
</modules>
<frontend>
<routers>
<cms>
<args>
<modules>
<Voyageone_Cms before="Mage_Cms">Voyageone_Cms</Voyageone_Cms>
</modules>
</args>
</cms>
</routers>
</frontend>
</config>
app/etc/module 创建Voyageone_Cms.xml
<?xml version="1.0"?>
<config>
<modules>
<Voyageone_Cms>
<active>true</active>
<codePool>community</codePool>
</Voyageone_Cms>
</modules>
</config>
当访问页面 http://localhost/magento/cms/index/noRoute时 会发现页面重定向到首页
2. 同样在
app/code/local 下新建module
app/code/local/Devicom
Cms
controllers
InderxController.php
etc
config.xml
InderController.php
<?php
require_once Mage::getModuleDir('controllers', 'Mage_Cms').DS.'IndexController.php';
class Devicom_Cms_IndexController extends Mage_Cms_IndexController
{
/**
* Render CMS 404 Not found page
*
* @param string $coreRoute
*/
public function noRouteAction($coreRoute = null)
{
mage :: log( Mage::getBaseUrl(). 'women/new-arrivals.html' ." second");
Mage::app()->getFrontController()->getResponse()
->setRedirect(Mage::getBaseUrl(). 'women/new-arrivals.html')
->sendResponse();
}
}
config.xml:
<?xml version="1.0"?>
<config>
<modules>
<Devicom_Cms>
<version>0.1</version>
</Devicom_Cms>
</modules>
<frontend>
<routers>
<cms>
<args>
<modules>
<Devicom_Cms before="Mage_Cms">Devicom_Cms</Devicom_Cms>
</modules>
</args>
</cms>
</routers>
</frontend>
</config>
app/etc/modules
Devicom_Cms.xml
<?xml version="1.0"?>
<config>
<modules>
<Devicom_Cms>
<active>true</active>
<codePool>local</codePool>
</Devicom_Cms>
</modules>
</config>
3. 当再次去访问页面http://localhost/magento/cms/index/noRoute时 显示的是 'women/new-arrivals.html‘
当查看system.log时 发现 first没有出现 而是second.
所以magento很聪明 知道哪个Module会被访问,而community下的CMS模块不在被执行。
System => Configure => Web => Default pages =>
Default No-route URL : cms/index/noRoute
CMS No Route Page : 404 page
1) 在 app/code/comunity下创建module
Voyageone
Cms
controllers
IndexController.php
etc
config.xml
IndexController.php
<?php
require_once Mage::getModuleDir('controllers', 'Mage_Cms').DS.'IndexController.php';
class Voyageone_Cms_IndexController extends Mage_Cms_IndexController
{
/**
* Render CMS 404 Not found page
*
* @param string $coreRoute
*/
public function noRouteAction($coreRoute = null)
{
mage :: log(Mage::helper('core/url')->getHomeUrl().' first');
Mage::app()->getFrontController()->getResponse()
->setRedirect(Mage::helper('core/url')->getHomeUrl())
->sendResponse();
}
}
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Voyageone_Cms>
<version>0.1</version>
</Voyageone_Cms>
</modules>
<frontend>
<routers>
<cms>
<args>
<modules>
<Voyageone_Cms before="Mage_Cms">Voyageone_Cms</Voyageone_Cms>
</modules>
</args>
</cms>
</routers>
</frontend>
</config>
app/etc/module 创建Voyageone_Cms.xml
<?xml version="1.0"?>
<config>
<modules>
<Voyageone_Cms>
<active>true</active>
<codePool>community</codePool>
</Voyageone_Cms>
</modules>
</config>
当访问页面 http://localhost/magento/cms/index/noRoute时 会发现页面重定向到首页
2. 同样在
app/code/local 下新建module
app/code/local/Devicom
Cms
controllers
InderxController.php
etc
config.xml
InderController.php
<?php
require_once Mage::getModuleDir('controllers', 'Mage_Cms').DS.'IndexController.php';
class Devicom_Cms_IndexController extends Mage_Cms_IndexController
{
/**
* Render CMS 404 Not found page
*
* @param string $coreRoute
*/
public function noRouteAction($coreRoute = null)
{
mage :: log( Mage::getBaseUrl(). 'women/new-arrivals.html' ." second");
Mage::app()->getFrontController()->getResponse()
->setRedirect(Mage::getBaseUrl(). 'women/new-arrivals.html')
->sendResponse();
}
}
config.xml:
<?xml version="1.0"?>
<config>
<modules>
<Devicom_Cms>
<version>0.1</version>
</Devicom_Cms>
</modules>
<frontend>
<routers>
<cms>
<args>
<modules>
<Devicom_Cms before="Mage_Cms">Devicom_Cms</Devicom_Cms>
</modules>
</args>
</cms>
</routers>
</frontend>
</config>
app/etc/modules
Devicom_Cms.xml
<?xml version="1.0"?>
<config>
<modules>
<Devicom_Cms>
<active>true</active>
<codePool>local</codePool>
</Devicom_Cms>
</modules>
</config>
3. 当再次去访问页面http://localhost/magento/cms/index/noRoute时 显示的是 'women/new-arrivals.html‘
当查看system.log时 发现 first没有出现 而是second.
所以magento很聪明 知道哪个Module会被访问,而community下的CMS模块不在被执行。