ThinkPHP的路由是针对模块的。

使用路由的配置,可以在Common/Conf/config.php中配置,也可以在模块中配置,例如:Home/Conf/config.php

'URL_MODEL'            => 2, //URL模式
'URL_ROUTER_ON' => true, //必须设置为true
'URL_ROUTE_RULES'=>array(
    'sitemap'=>array('Home/SiteMap/index','',array('ext'=>'xml')),
    )

Home/SiteMap/index可以通过url http://www.text.com/Home/sitemap.xml访问

但是如果跳过模块即 http://www.text.com/sitemap.xml 则会报错无法加载模块SiteMap

tp手册中有这么一句话:

3.2的路由功能是针对模块设置的,所以URL中的模块名不能被路由,路由定义也通常是放在模块配置文件中。

也就是说模块是一定要在url中存在的。

通过网上查找资料最后发现原来tp中略有改动,把可以省略模块的路由的配置省略了。

查看Common/Conf/config.php配置

'MODULE_DENY_LIST'   => array('Common', 'User'),
//'MODULE_ALLOW_LIST'  => array('Home'),

默认允许访问的模块是被注释了,我们去掉这个注释

我再访问 http://www.text.com/sitemap.xml.

妥了。