站点地图(sitemap)是一个文件,列出了网站上的页面。搜索引擎机器人使用它来对你网站上的页面进行爬取和编制索引。因此,站点地图的一般用途是帮助搜索引擎,并使它们更容易为你的站点页面建立索引,从而提高它们在互联网上的可见性。
脚本方法
在MediaWiki中,你可以借助该应用程序随附的脚本生成一个站点地图,并定期对其进行更新。在本文中,将详细介绍如何创建和更新站点地图的步骤。
创建站点地图目录
这一步不是必须的。你可以在MediaWiki应用程序的任何文件夹中生成站点地图文件。但是,为了更有条理,最好有一个特定的文件夹来存储站点地图。例如,在MediaWiki根目录下,你可以创建一个名为sitemap的文件夹,然后可以在其中生成站点地图。
mkdir sitemap
有必要的话,记得修改用户组和权限。
生成站点地图
然后,运行如下脚本:
php maintenance/generateSitemap.php --memory-limit=50M --fspath=/data/wwwroot/wiki.mindseed.cn/sitemap/ --identifier=wiki.mindseed.cn --urlpath=/sitemap/ --server=https://wiki.mindseed.cn --compress=yes --skip-redirects
其中要修改的参数:fspath=
是你刚刚建立的sitemap目录的绝对路径;identifier=
为标识符,可以用网站名或者是任何你喜欢的名字,默认使用的是数据库名;urlpath=
是Url路径,就按官网的/sitemap/
来就好了;server=
为你的网站名,这没啥好解释的了。
运行完之后,sitemap目录下会生成一堆的文件,其中有一个sitemap-index-example.com.org.xml
的文件和一堆以sitemap-index-example.com.org-NS_
为前缀的gz压缩文件。你可以手动将sitemap-index-example.com.org.xml
提交将给google或百度等站点,也可以做个软链接以便爬虫能爬到,如下:
ln -s /sitemap/sitemap-wiki.mindseed.cn.xml sitemap.xml
更新站点地图
如果再次运行上面的生成代码并且仍保存在sitemap目录中,那么其中的旧文件将被更新后的新文件所替换。因此,为了定期更新站点地图,你需要定期执行脚本。当然你也可以设置一个cron作业以按一定的时间间隔执行脚本,而不必每次都手动执行此操作,无论您认为哪种方法最适合您的站点(例如每天一次,每周一次)。
在控制台中输入:
crontab -e
然后加入以下内容(比如每周日晚上23点更新一次):
00 23 * * 0 /usr/local/php/bin/php /data/wwwroot/wiki.mindseed.cn/maintenance/generateSitemap.php --memory-limit=50M --fspath=/data/wwwroot/wiki.mindseed.cn/sitemap/ --identifier=wiki.mindseed.cn --urlpath=/sitemap/ --server=https://wiki.mindseed.cn --compress=yes --skip-redirects
注意:php命令一定要将完整地址写出来,否则不会起效。想要知道PHP位于什么位置,可以在控制台中输入which php
。
保存退出后,记得重新加载一下:
systemctl reload crond.service
检查一下定时计划:
crontab -l
具体的crontab用法可以搜索网上的相关教程。
AutoSitemap扩展
如果你对脚本和cron作业不熟悉,那么最好的方式还是选择扩展。虽说此类扩展几乎销声匿迹,但总算是幸存了一两个,更推荐使用AutoSitemap。从名字就能看出,这个扩展能够帮助用户自动创建一个“stitemap.xml”文件,并且可以根据需要设置按什么周期来生成(如每天、每周或每月等)。简单的配置如下,具体可以参考官方文档:
wfLoadExtension( 'AutoSitemap' );
$wgAutoSitemap["filename"] = "sitemap.xml"; //default value
$wgAutoSitemap["notify"] = [
'https://www.google.com/webmasters/sitemaps/ping?sitemap=https://wiki.mindseed.cn/sitemap.xml',
'https://www.bing.com/webmaster/ping.aspx?sitemap=https://wiki.mindseed.cn/sitemap.xml'
];
$wgAutoSitemap["freq"] = "weekly";
生成需要一定的时间,所以请耐心等待。
总结
采用脚本方式最大的问题可能就是国内几个搜索引擎会出现“索引型不予处理”的问题,因为不支持嵌套也不支持.gz格式的网站地图,所以最好的方式还是采用扩展。