禁止用户在 WordPress 网站上用句点替换连字符

Disallow users from replacing hyphens with periods on WordPress sites

在查看 Google 分析和广告流量后,我们意识到人们能够以一种非常奇怪的方式在客户网站上找到页面。用句点替换连字符。

例如...

正确的永久link:www.domain.com/this-is-a-link 不正确:www.domain.com/this.is.a.link

两者都有效并将用户发送到同一页面。但我不确定为什么。我们尝试了各种浏览器,似乎在所有浏览器中的效果都一样。通常,这会对用户有所帮助(一般来说),但它会扭曲分析。

我怀疑广告活动人员创建了一个 link,其中包含引发问题的句点。但即使解决了这个问题,它也没有回答为什么这会起作用或如何禁止这种行为/功能的问题。

有什么想法吗?

Wordpress 使用 mod_rewrite 永久 link。 mod_rewrite 在您的 url 中使用模式匹配来区分您的 .htaccess 文件中要重写和不重写的内容。

. 字符实际上表示 正则表达式模式匹配中的任何字符 ,mod_rewrite 用来确定要重写的内容。

为了更好地说明这一点,请举个例子

www.domain.com/this-is-a-link

成为您想要的正确 link 但在

的情况下
www.domain.com/this.is.a.link

它也将匹配,因为 . 被读取为 -,因为单点表示 任何字符

您可以阅读有关 mod_rewrite 的更多信息,以更好地理解为什么句号也被解读为破折号。

解决此问题的唯一方法是重写默认的 Wordpress 本机 mod_rewrite 模式或将其报告为错误以要求核心社区将其列为错误会更合适。但这似乎很常见,即使是像 eBay 这样的大型网站 url

 http://www.ebay.com/rpp/halloween-events/sweet-treats

url和

 http://www.ebay.com/rpp/halloween-events/sweet.treats

也是有效的。我认为这是 mod_rewrite 的一个限制,因此您可能希望接受它。