我前些日子给别人做伪静态,为了优化好,所以栏目做成/{$catidr}/就是我们说的一级栏目名称,应该是域名/meiguo/结果出来之后是域名/%7B$catdir%7D/的404错误,我就开始检查程序,我用的是最新版的phpcms v9的更新版 不知道以前有没有这个问题! 伪静态规则是
<rule name="meiguo" stopProcessing="false"> <match url="^(.*)meiguo/$" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> <action type="Rewrite" url="{R:1}/index.php?m=content&c=index&a=lists&catid=6" appendQueryString="false" /> </rule>然后看了生成的规则,我修改了一段程序就可以了,我们找到/phpcms/modules/admin/classes/cache_api.class.php找到下边代码
public function category() //这个方法里边的下边这个方法 if(!preg_match('/^(http|https):\/\//', $r['url'])) { $r['url'] = siteurl($r['siteid']).$r['url']; } elseif ($r['ishtml']) { $r['isdomain'] = '1'; } $categorys[$r['catid']] = $r;修改成下边
if(!preg_match('/^(http|https):\/\//', $r['url'])) { //$r['url'] = siteurl($r['siteid']).$r['url']; //addby widuu 2013-05-23 //$r['url'] = siteurl($r['siteid']).$r['url']; $r['url'] = preg_replace('/(\{\$catdir\})/i',$r['catdir'],siteurl($r['siteid']).$r['url']); //end } elseif ($r['ishtml']) { $r['isdomain'] = '1'; } //addby widuu 2013-05-23 $r['url'] = preg_replace('/(\{\$catdir\})/i',$r['catdir'],$r['url']); //end $categorys[$r['catid']] = $r;然后找到/phpcms/modules/admin/category.php里边的public function cache()里边有跟上边相同的代码修改了就可以了!
发表评论 取消回复