在我的工作中,我们有各种各样的网页,我的老板觉得这些网页的排名低于应有的水平,因为“mywebsite.org/category/”对于搜索引擎来说看起来与“mywebsite.org/category/index.php”不同" 确实如此,即使它们显示相同的文件。我不认为它是这样工作的,但他相信。也许我错了。我有两个问题:
- 我如何让它在所有子类别的地址栏中显示“index.php”?
- 这真的是pagerank的工作原理吗?
在我的工作中,我们有各种各样的网页,我的老板觉得这些网页的排名低于应有的水平,因为“mywebsite.org/category/”对于搜索引擎来说看起来与“mywebsite.org/category/index.php”不同" 确实如此,即使它们显示相同的文件。我不认为它是这样工作的,但他相信。也许我错了。我有两个问题:
将此代码添加到每个页面的顶部也应该有效:
<?php
if (substr($_SERVER['REQUEST_URI'], -1) == '/') {
$new_request_uri = $_SERVER['REQUEST_URI'].'index.php';
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$new_request_uri);
exit;
}
?>
用于重写规则的 Apache 配置:
# 在通用配置中 LoadModule rewrite_module modules/mod_rewrite.so # 在你的虚拟主机中 重写引擎开启 # 将以斜杠结尾的所有内容重定向到相同的内容,但添加了 index.php 重写规则 ^(.*)/$ $1/index.php [R=301,L] # 或相反,如建议的那样 # 重写规则 ^(.*)/index.php$ $1/ [R=301,L]
您不会告诉我们您使用的是直接 PHP 还是其他框架,但对于 PHP,您可能只需将站点上的所有链接更改为“mywebsite.org/category/index.php”。
我认为这可能会影响您的搜索引擎排名。但是,您最好只使用“mywebsite.org/category”而不是添加“index.php”。
最重要的是,您需要确保您网站中的所有链接都使用其中一个。地址栏中实际显示的内容并不重要。
一个简单的解决方案是放入<head>
标签:
<link rel="canonical" href="http://mywebsite.org/category/" />
然后,无论搜索引擎最终到达哪个页面,它都会知道它只是一个不同的视图/category/
对于您的第二个问题——是的,如果 Google 认为您在发送垃圾邮件,它会影响您的结果。如果不是这样,他们就不会添加对rel="canonical"
. somedir/index.*
虽然如果他们的待遇相同,我不会感到惊讶somedir/
我同意所有说放弃 index.php 的人的观点。请不要强迫您的访问者键入 index.php,如果不键入它可以获得相同的结果。
你没有说你是在 IIS 还是 Apache 服务器上。可以将 IIS 设置为假定 index.php 是默认页面,以便 http://mywebsite.org/ 将正确解析而不包括 index.php。
我想说,如果您想包含默认页面并强制您的用户在 url 中输入页面名称,请使页面名称对搜索引擎和访问者有意义。
例子:
http://mywebsite.org/teaching-web-scripting.php
对 SEO 排名来说更具描述性和有益性,而不仅仅是
http://mywebsite.org/index.php
我不确定 /category/ 和 /category/index.php 是否被视为 seo 的两个 url,但很有可能它会以一种或另一种方式影响它们。只是为了确定而进行快速更改并没有错。
一些想法:
网址
而不是添加/index.php,你最好让它没有index.php,因为关键字'index'可能不是你想要的。
您可以编写一个脚本来检查当前页面的 URL 是否以 index.php 结尾并将其删除,然后转发到生成的 URL。
例如,在我的一个网站上,我需要“www”。对于我的域(www.domain.com 和 domain.com 被认为是两个用于搜索目的的 URL,尽管并非总是如此),所以我有一个脚本来检查每个页面,如果没有 www.,它会对其进行广告并转发。
if (APPLICATION_LIVE) {
if ( (strtolower($_SERVER["HTTP_HOST"]) != "www.domain.com") ) {
header("HTTP/1.1 301 Moved Permanently"); // Recognized by search engines and may count the link toward the correct URL...
header("Location: " . 'www.domain.com/'.$_SERVER["REQUEST_URI"] );
exit();
}
}
您可以对其进行模式化以执行您需要的操作。
这样,如果爬虫访问了错误的 URL,它将被通知它已被正确的 URL 替换。如果一个人访问了错误的 URL,他们将被转发到正确的 URL(大多数人不会注意到),然后如果他们从浏览器复制 url 以发送某人或链接到该页面,他们最终将链接到该页面的正确网址。
链接网址
他们将其他页面链接到您的页面的方式对于 seo 更为重要。确保您的所有站内链接都使用正确的 URL(不带 /index.php),并且如果您有“指向此页面的链接”功能,则它不包括 /index.php 部分。您无法控制每个人如何链接到您,但您可以对其进行一些控制,例如第 1 项中的脚本。
网址路由
您可能还想考虑使用某种框架或独立的 URL 重新路由方案。它可以使它有更多的关键字等。
可能想看看 robots.txt 文件?不是最好的解决方案,但你应该能够用它们实现一些可行的东西......