介绍
Drupal 是一个开源、免费的CMS (内容管理)系统,可用于构建各种网页,例如此页面。它具有许多功能,包括支持管理 SEO URL,这对搜索引擎非常有利。
大约一年半前,我注意到这个页面上有一位爸爸影响了这些 SEO URL。然后我必须寻找解决方案,然后我解决了问题。然后最近这个现象又出现了,或者说我才注意到。有可能在其中一次基础系统升级期间,我可能不小心用“工厂”文件覆盖了以前修改的文件,因此我不得不再次进行这些更改。幸运的是,在我之前的笔记的帮助下,我现在能够在很短的时间内解决它,所以我想我应该写一篇简短的文章,看看它是否对其他人有效,我如果我必须再次设置它,那就更方便了。
因此,在这个简短的疑难解答中,我们将了解如何修复页面 URL 中不必要的 index.php 部分。
症状
当我们导航到基于 Drupal 的网站时,“index.php”部分突然出现在链接到子页面的请求开头的标题栏中。此页面的一些示例:
https://www.dwoke.com/index.php/
https://www.dwoke.com/index.php/leirasok
https://www.dwoke.com/index.php/cikkek
https://www.dwoke.com/index.php/leirasok/web-hoszting
https://www.dwoke.com/index.php/enciklopedia
(我没有直接链接这些网址,这样搜索引擎就不会得到不必要的错误地址,并且在编写本文时,该错误将被修复,因此它们无论如何都会跳回到正确的网址版本。)
另一个有趣的事情是,如果我们删除标题栏中的“index.php /”部分,页面将在没有它的情况下进入,因此它应该正常工作。但是,通过单击页面上的任何内部链接,下一页的 URL 将再次包含这个不需要的“index.php /”部分。
问题
一方面,这很烦人,因为如果我们谈论 SEO URL,则没有空间容纳任何 php 文件或其他参数,另一方面,它会导致更严重的问题:搜索引擎,例如,如果 Google找到这些不正确的 URL,然后开始对它们建立索引,这会引发几个问题:
新的URL是在Google索引中创建的,它们从SEO方面开始他们的职业生涯,因为它们是新的,所以没有指向外部链接,它们还没有SEO价值,等等......
由于页面在使用或不使用内部不必要的index.php 部分的情况下工作,因此会在Google 索引中创建重复内容,这也不利于排名。
所有这一切都是今天Apache 在你的日记中看到的这个网站的一个新鲜例子:
通过Google的抓取工具抓取URL
在命令中,我首先过滤了包含“66.249” IP地址的IP地址,这些IP地址众所周知是来自Google爬虫地址空间的地址,然后过滤“index.php”以仅显示它们,并且为了当前例如,我拍摄了前 20 行,这些都是在修复之前的早上。
这里可以明确的是,所有查询都以“index.php /”开头,并且服务器返回的响应代码为200,即将页面内容返回给请求者,没有任何问题。
所以这里的问题是,谷歌也开始“研磨”这些不正确的URL,所以如果我们不及时注意到,它会抓取大量的URL,我们的搜索引擎排名可能会下降很多。
我们怎样才能解决这一切?
解决方案
解决方案并不像您一开始想象的那么复杂,您只需要修改 Web 根目录中的两个文件即可。
修改.htaccess文件
.htaccess 文件可用于在指定限制内本地控制 Apache 在给定目录或目录结构中的操作。
首先,使用您喜欢的编辑器打开网页根目录中的 .htaccess 文件:
nano .htaccess
然后将以下部分放在开头并保存:
<IfModule mod_rewrite.c>
RewriteEngine on
# "index.php/" résszel kezdődő URL-ek "visszaterelése" 301-el a helyes címre:
RewriteRule ^index.php/$ / [R=301,L]
RewriteRule ^index.php/(.*) /$1 [R=301,L]
</IfModule>
这里发生的所有事情都是检查 Apache 指令是否重写了负责重定向的Apache 模块,然后打开重定向系统并使用状态代码 301(“永久迁移”)来重定向所有以“开头的请求” index.php /” 到没有这个的 URL 版本。例如,重写规则末尾的“L”标志确保 Apache 不再为此查询执行其他重写规则(如果这些规则仍在 .htaccess 的其他部分)。
实际上,这里我们只是将整个东西打包到一个控制指令中,只是为了保持常规,因为如果服务器上已经运行了 Drupal 系统,那么这个模块肯定是可用的。
这将防止“index.php /”部分将来包含在我们的 URL 中。
那么刷新页面的缓存也没什么坏处,因为不正确的 URL 可能仍然保留在里面。您也可以从管理菜单执行此操作,或者如果您使用drush,则使用以下命令:
drush cr
修改您的 robots.txt 文件
放置在Web根目录中的robots.txt文件是机器人的文件,我们可以在其中放置各种指令和规则来指示爬虫正确运行。然而,很多机器人都会忽略这个文件,很多时候这些机器人也被称为“坏机器人”。幸运的是,谷歌的机器人不是其中之一 - 这对我们现在很重要 - 但他们考虑了 robots.txt 文件。现在让我们打开这个文件进行编辑:
nano robots.txt
最后,添加以下单行并保存:
Disallow: /index.php/*
或者,如果您更有同情心,您可以添加一个命令:
echo "Disallow: /index.php/*" >> robots.txt
此行指示机器人(无论考虑到哪一个)不要索引以“/index.php/”开头的 URL。
这也“追溯”纠正了错误,即已索引的错误 URL 会从搜索引擎索引中排除。当然,这是一个较长的过程,其实施时间也取决于很多因素,例如机器人访问我们网站的频率等等。
结果
我们的行为成果可以通过回顾 Apache 日志文件来轻松验证,只是现在在本例中而不是前 20 行,它查看错误修复后创建的最后 20 行:
带有 301 响应代码的重定向 URL
在这里,我们也可以看到 Google 的机器人仍然运行错误的 URL,其中包含 index.php,但现在 Apache 不再返回之前的响应代码 200 和内容,而是返回响应代码 301。
如果我们使用 grep 的“-C”选项更好地“扩展”这些行,我们仍然可以在结果之前和之后看到 1-1 加行,因此我们可以看到在该特定查询之后发生的情况。另外,我在最后再次放置了 index.php 过滤,所以现在它以颜色突出显示,以便可以更好地审查:
重定向到 301 的 URL
在这里,您可以看到它在对以红色突出显示的 index.php 行的查询中返回响应代码 301,后跟没有 index.php 的相同 URL 的版本,它已经给出了正确的响应代码 200 以及内容本身。
因此,Google 几乎正在纠正索引中错误包含的 URL。
您还可以使用本说明开头所示的断开链接进行尝试。
结论
幸运的是,我及时注意到了这个问题,我还没有看到搜索下降,无论如何,在更新基本系统时,请确保如果用新的 .htaccess 和 robots.txt 文件覆盖旧的,不要不要忘记覆盖您之前的更改。所以。
评论