.htaccess - 为什么这个简单的 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 重定向,它们还能工作吗?
解决方案
- 不,Google(或任何其他)搜索机器人无法读取您的 .htaccess
- 很难弄清楚搜索机器人是如何找到
/tags
URI 的,但它肯定隐藏在您网页的某个地方。
现在告诉搜索机器人/tags
不存在是使用重定向规则R=301
:
RewriteEngine On
RewriteRule ^tags(/.*)?$ /tags.php [L,NC,R=301]
有了这个301
规则,搜索机器人最终会放弃旧的/tags/
结果并且只会记住/tags.php
。
推荐阅读
- php - MySQL - 如何在附加到 TEXT 字段之前检查值是否存在?
- javascript - 循环内的Vue组件
- google-sheets - 动态查询范围
- wordpress - 如何在 Squarespace 中使用我现有的 G Suite 应用程序?
- sqlite - Windows Universal 现有应用程序向 SQLite 表添加新列
- node.js - 如何使用 mssql 节点模块执行更新并正确关闭连接
- video - 怎么做标签在以下场景中与 amp-story 交互?
- python - Python PostgreSQL psycopg2 将列连接到新列
- php - PHP require_once 持续存在于一个单独的进程中
- google-cloud-platform - 没有结算帐号的 Google Cloud Function