首页 > 解决方案 > 为什么这个简单的 RewriteRule 不再起作用,为什么谷歌一直看到它?

问题描述

前段时间(我认为是几年前)我的 htaccess 中的这个简单的 RewriteRule 停止工作。

RewriteRule tags/ tags.php [L]

它工作了多年,然后在服务器更改或服务器升级或切换到 php-fpm(我不记得)后的第二天就停止了工作。

我通过删除它来解决它,并将我的所有链接直接发送到 tags.php 文件。

此规则是我用于许多网站的小型 CMS 的一部分。这些网站工作正常,一切正常。

但是当我创建一个新网站时,几天后谷歌会及时向我发送一条警告,告诉我 url mysite.com/tags/ 会产生错误 404。

这很奇怪,因为 url mysite.com/tags/ 多年来在我的网站和我的站点地图中都不再存在,我敢肯定,因为它在我的网站的主菜单中只使用过一次,并且已被替换与 mysite.com/tags.php。最重要的是,它不能存在于新站点中。起初我并没有在旧网站上关注它。可能 google 可能已经在旧站点中看到它,并且还没有忘记它,但肯定不会在新站点中看到它。

所以,我有几个未回答的问题。

首先,也许是最重要的理解:谷歌如何看到 url mysite.com/tags/?谷歌是否有可能读取我的 htaccess 以了解我将创建什么样的 url?

第二:如何永久解决问题?

- - - - - - - - - - - - - 更新 - - - - - - - - - - -

很抱歉我回复的延迟(暑假)。

关于anubhava的回答,我有疑问,但这是我的错,也许我省略了部分代码。

下一条规则说:

RewriteRule ^tags-([^/]+)\/$ tags.php?letter=$1 [L]

并制作一些网址,例如:mysite.com/tags-k/

这些 url 可以工作,但是如果我在 tags.php 上设置 301 重定向,它们还能工作吗?

标签: .htaccessurl-rewriting

解决方案


  1. 不,Google(或任何其他)搜索机器人无法读取您的 .htaccess
  2. 很难弄清楚搜索机器人是如何找到/tagsURI 的,但它肯定隐藏在您网页的某个地方。

现在告诉搜索机器人/tags不存在是使用重定向规则R=301

RewriteEngine On

RewriteRule ^tags(/.*)?$ /tags.php [L,NC,R=301]

有了这个301规则,搜索机器人最终会放弃旧的/tags/结果并且只会记住/tags.php


推荐阅读