很喜欢FASTADMIN管理程序中的CMS程序,简单且开源,一直在学习。

可是一直以来有点遗憾就是CMS的内容访问URL不太满意。

最近学习了下SEO相关的只是,了解到很多方面细节上的优化都需要做。页面的URL结构就是其中之一。

可是CMS默认的内容URL结构为  /public/cms/a/2.html    而且任何栏目类别中的文档内容打开之后都是这个样子的结构。

于是今天查了查官网相关的资料,表示没有相关的解决方案。于是决定在本地新装一个FASTADMIN的程序来随便弄弄看。

。。。

没想到...就只用了几分钟时间一步到位,解决了

看下图是访问栏目板块的URL, 这里没有将URL设置成  /父栏目/子栏目   这样的结构,尝试了一下出错,所以就没有追求那么复杂的结构形式了。


下面是文章内容的URL结构  其中/wordpress 是栏目英文名  后面的/htmlappino.html 是文章名。



没想到运气不错,一下子就搞定了,于是马上在服务器上我的正式程序中进行相关设置操作,结果出错了!!

最后发现是缓存问题,于是建议大家按照如下操作步骤进行设置,亲测可用,避免出现错误。


1. 在后台插件管理中打开CMS程序的配置界面进行伪静态设置

  首先删掉栏目地址前面的  /c   然后保存,清楚缓存,到前端刷新页面,直到设置生效,这个时候前端访问栏目地址中间就没有

  /c 这个结构了。

这个时候不用慌,将你的站点的各个栏目都打开看一看,看是否全部都能够访问,并且点击栏目下的文章内容也能打开。


2. 完成以上操作之后访问所有页面都不出错的情况下进行如下操作。

打开CMS插件目录, 打开模型文件夹model  然后打开 Archives.php    文件进行编辑.

找到下面这段代码

 public function getUrlAttr($value, $data)
    {
 $diyname = $data['diyname'] ? $data['diyname'] : $data['id'];
 return addon_url('cms/archives/index', [':id' => $data['id'], ':diyname' => $diyname, ':channel' => $data['channel_id']]);
 }


然后修改成如下

 public function getUrlAttr($value, $data)
    {
   $diyname = $data['diyname'] ? $data['diyname'] : $data['id'];
   $cname = Channel::where('id',$data['channel_id'])->value('diyname');
   return addon_url('cms/archives/index', [':id' => $data['id'], ':diyname' => $diyname, ':channel' => $cname]);
    }

其实意思很简单,就是先定义$cname 通过栏目id 来获取栏目的自定义名称,然后将下面的 ' :channel' => 内容 从原来默认的栏目id改为现在的栏目自定义名称 这样就完成了 :channel 的定义。然后保存。


3.再次打开后台CMS插件配置界面,继续修改伪静态设置。

这一次将文章访问URL的伪静态设置内容中的 /a 部分更换为 /[:channel] 

然后保存,然后删除更新缓存,刷新后台刷新前台,回到前台访问首页,从首页开始打开栏目,打开内容页面,看看URL结构是否改变,如果没有变化,回到后台打开插件配置,看看刚刚设置的内容是否成功保存,如果还没生效就多刷新几次缓存和页面即可,然后就可以看到内容页面URL结构已经修改成功,到这里CMS内容页,栏目页的URL结构优化就完成了!