2

在我的工作中,我们有各种各样的网页,我的老板觉得这些网页的排名低于应有的水平,因为“mywebsite.org/category/”对于搜索引擎来说看起来与“mywebsite.org/category/index.php”不同" 确实如此,即使它们显示相同的文件。我不认为它是这样工作的,但他相信。也许我错了。我有两个问题:

  1. 我如何让它在所有子类别的地址栏中显示“index.php”?
  2. 这真的是pagerank的工作原理吗?
4

7 回答 7

3

将此代码添加到每个页面的顶部也应该有效:

<?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;
}
?>
于 2009-08-20T20:11:59.953 回答
3
  1. 除了更改各处的所有链接外,更简单的解决方案是使用重写规则。确保它是永久重定向,否则 Google 将继续使用旧链接(没有 index.php)。您如何执行此操作完全取决于您的 Web 服务器,但对于 Apache HTTPd,它看起来类似于下面给出的示例。
  2. 是的。或者我听说过。很少有人确切知道。但谷歌提到了这个指导方针(作为“保持一致”)。请务必查看Google 的所有网站管理员指南

用于重写规则的 Apache 配置:

# 在通用配置中
LoadModule rewrite_module modules/mod_rewrite.so

# 在你的虚拟主机中
重写引擎开启

# 将以斜杠结尾的所有内容重定向到相同的内容,但添加了 index.php
重写规则 ^(.*)/$ $1/index.php [R=301,L]

# 或相反,如建议的那样
# 重写规则 ^(.*)/index.php$ $1/ [R=301,L]
于 2009-08-20T20:15:22.617 回答
1
  1. 您不会告诉我们您使用的是直接 PHP 还是其他框架,但对于 PHP,您可能只需将站点上的所有链接更改为“mywebsite.org/category/index.php”。

  2. 我认为这可能会影响您的搜索引擎排名。但是,您最好只使用“mywebsite.org/category”而不是添加“index.php”。

最重要的是,您需要确保您网站中的所有链接都使用其中一个。地址栏中实际显示的内容并不重要。

于 2009-08-20T20:09:23.703 回答
1

一个简单的解决方案是放入<head>标签:

<link rel="canonical" href="http://mywebsite.org/category/" />

然后,无论搜索引擎最终到达哪个页面,它都会知道它只是一个不同的视图/category/

对于您的第二个问题——是的,如果 Google 认为您在发送垃圾邮件,它会影响您的结果。如果不是这样,他们就不会添加对rel="canonical". somedir/index.*虽然如果他们的待遇相同,我不会感到惊讶somedir/

于 2009-08-20T20:10:10.100 回答
1

我同意所有说放弃 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
于 2009-08-20T21:03:49.990 回答
1

我不确定 /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 重新路由方案。它可以使它有更多的关键字等。

请参阅此处的示例:http ://docs.kohanaphp.com/general/routing

于 2009-08-20T20:16:31.693 回答
-1

可能想看看 robots.txt 文件?不是最好的解决方案,但你应该能够用它们实现一些可行的东西......

于 2009-08-20T20:06:11.450 回答