解决启用wp super cache缓存后,页面追加多个斜杠仍然可以访问的隐患
昨天一哥们在博客留言告知,启用缓存后,html 文章页面带上斜杠也还可以访问,试了下还真是这样。
其实,想想也是,wp-super-cache 生成的文章缓存本身是以【%post_id%.html/index.html】形式存在的:
和目录形式一摸一样,那么加上斜杠后就相当于访问的是 http://****/1234.html/index.html,自然毫无问题。
那么按照这个哥们的想法,访问 2 个不同的页面,出现的确实一样的效果,那么自然会想到对 SEO 不太友好,会不会出现重复收录的问题。我觉得搜索引擎虽然偶尔会出现这种脑残收录,不过几率应该不大,除非你到处留了带斜杠结尾的内、外链,让蜘蛛爬到了。
正好,我也是一个完美主义,这种事还是要动手解决解决的。
针对 html 页面,追加一个斜杠还可以访问的情况,我在 nginx 里面新增如下规则即可搞定:
rewrite ^/(.*).html/$ /$1.html permanent;
额外补充一下 apache 的规则(未作测试,凭经验写的,有需求的自己调试吧!):
RewriteRule ^(.*).html/$ $1.html [R=301,L]
现在再遇到往 html 后面添加一个斜杠的情况,就会自动 301 跳到不带斜杠的 html 页面,本以为问题解决了,没想到这哥们又说了,带 N 个斜杠还是可以访问,也不会跳转!
我次奥,还真是!试了一下别人的网站,比如卢松松的留言板,多加几个斜杠同样是可以访问的,既然他的网站 SEO 无碍,我们也就没什么好担心的了!
不过,我还是试了一下写相应的匹配规则,无奈正则匹配了半天多斜杠形式都没效果,最后我想到了另一个解决办法,那就是利用 robots 禁止搜索引擎抓取这种形式的路径,规则如下:
User-Agent: *
#其他规则已省略.
Disallow: /*//
Disallow: /*.html/
哦了,相信这样就可以解决追加斜杠仍然可以访问带来的 SEO 隐患了!
最新补充:偶然在日志发现蜘蛛居然经常爬 http://zhangge.net/about/22222244445555 这种链接,明明不存在,但又确实可以访问!只要继续新增 nginx 规则如下:
rewrite ^/([a-z-A-Z]+)/(d+)$ /$1/ permanent;
rewrite ^/([a-z-A-Z]+)/([a-z-A-Z]+)/(d+)$ /$1/$2/ permanent;
搞不懂蜘蛛是怎么想,反正挺坑爹!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringBoot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
- frp 内网穿透远程桌面(Windows 10)配置
- 你来讲讲AQS是什么吧?都是怎么用的?
- Angular单元测试里pipe的mock设计
- 亿级数据判断 bitmap-布隆过滤器
- centOS8 安装MySQL8(亲测)
- 聊一聊微信小程序包内容
- 全面分析 MySQL并发控制
- Flink History Server
- 几种定时任务(Timer、TimerTask、ScheduledFuture)的退出—结合真实案例【JAVA并发】
- gitlab内存消耗大,频繁出现502错误的解决办法
- Java基于POI实现excel任意多级联动下拉列表——支持从数据库查询出多级数据后直接生成【附源码】
- Elasticsearch 通过Scroll遍历索引,构造pandas dataframe 【Python多进程实现】
- 【Java】 NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、ArrayIndexOutOfBoundsE
- Meow攻击删除不安全(开放的)的Elasticsearch(及MongoDB) 索引,建一堆以Meow结尾的奇奇怪怪的索引(如:m3egspncll-meow)