周三下午,Chris Morgan 坐在电脑前,盯着一串带问号的链接。https://chrismorgan.info?utm_source=twitter&utm_medium=social——这种网址他见多了。别人往他的链接里塞跟踪参数,像在给网页打标记。他决定:在自己的网站上,问号后面不许跟任何东西。
Morgan 不是技术小白。他的个人网站跑在 Caddy 服务器上,自己写配置。这次他加了一条规则:所有带查询字符串的请求,一律拒绝。所谓查询字符串,就是网址里问号后面的部分——?t=123、?utm_source=xxx 都算。他的逻辑很直接:Referer 请求头已经能告诉我流量从哪来,不需要你再画蛇添足。如果 Referer 为空,那通常有正当理由,我更不该强行追踪。
![]()
这种做法在技术上不算复杂。Morgan 在 Caddyfile 里加了拦截规则,测试了几种边界情况。他原本想直接把这篇文章发布在 https://chrismorgan.info/?,也就是路径为空、查询字符串也为空的极端 URL。这会打破很多工具的假设——curl 命令行甚至会非法截断尾部的问号。但他最终选择了仁慈:用 /no-query-strings 作为文章地址,放过那些没做错的普通人。
![]()
这不是一时兴起。Morgan 提到,早年他确实用过 ?t=… 和 ?h=… 来给样式表做缓存破坏。现在他认定这些用法可以中断,网站上不应该再有合法的查询字符串请求。如果有人非要试试加参数会怎样,服务器会礼貌地拒绝。这是他对自己域名主权的宣示:我的网址,我做主。
这件事的有趣之处在于反向思考。整个行业都在追逐更精细的追踪——UTM 参数、点击热图、用户画像——Morgan 却在做减法。他不反对别人在自己的网站上用这些工具,但反感别人把这些东西塞进他的链接里。UTM 参数本该是内容创作者自己用的,不是让读者帮你填的。这种"越界"让他不适。
技术实现上有个小插曲。Morgan 承认自己在折腾 Caddy 的极限:try_files 重写 involved 时服务器会卡住。他猜以前没人用 Caddy 干过这种"蠢事"。这反而让他更来劲——反正已经在 push Caddy 的边界了,不妨再推一把。他计划以后用 /? 或 /%3F(编码后的问号)做点别的实验。
![]()
这件事能引发讨论,是因为它戳中了一个灰色地带。追踪参数是行业惯例,但惯例不等于正确。Morgan 的解决方案是技术性的,但他的出发点很产品化:用户体验。普通用户看到一串 UTM 参数,不会觉得专业,只会觉得乱。更重要的是,这是他的网站,他有权利定义什么是"干净"的链接。
最后他留了一句话:你可以对你的网站做任何事。这是开源精神,也是互联网的原教旨主义——每个域名都是一块自治领地。Morgan 选择用代码划定边界,而不是写篇文章抱怨。这种动手解决问题的风格,比他的观点本身更值得注意。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.