.htaccess 获得;mywebsite.org/“我的网站”;决心;mywebsite.org/index.php“;

.htaccess 获得;mywebsite.org/“我的网站”;决心;mywebsite.org/index.php“;,.htaccess,redirect,seo,indexing,http-status-code-301,.htaccess,Redirect,Seo,Indexing,Http Status Code 301,我的老板认为,在我的工作中,我们有各种各样的网页,它们的排名低于应有的排名,因为“mywebsite.org/category/”看起来与“mywebsite.org/category/index.php”不同,尽管它们显示的是同一个文件。我不认为这样有效,但他确信。也许我错了。我有两个问题: 如何使其在所有子类别的地址栏中显示“index.php” pagerank真的是这样工作的吗 可能想看看robots.txt文件?这不是最好的解决方案,但你应该能够用它们实现一些可行的东西 您不会告诉我们

我的老板认为,在我的工作中,我们有各种各样的网页,它们的排名低于应有的排名,因为“mywebsite.org/category/”看起来与“mywebsite.org/category/index.php”不同,尽管它们显示的是同一个文件。我不认为这样有效,但他确信。也许我错了。我有两个问题:

  • 如何使其在所有子类别的地址栏中显示“index.php”
  • pagerank真的是这样工作的吗

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

  • 您不会告诉我们您是否使用的是纯PHP或其他框架,但对于PHP,您可能只需要将站点上的所有链接更改为“mywebsite.org/category/index.PHP”

  • 我认为这可能会影响你的搜索引擎排名。然而,您最好只使用“mywebsite.org/category”,而不是在每个目录中添加“index.php”


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

    一个简单的解决方案是放入
    标记:

    <link rel="canonical" href="http://mywebsite.org/category/" />
    
    
    
    然后,无论搜索引擎最终出现在哪个页面,它都会知道这只是一个不同的
    /category/


    至于你的第二个问题——是的,如果谷歌认为你在发垃圾邮件,它会影响你的搜索结果。如果不是,他们就不会添加对
    rel=“canonical”
    的支持。尽管如果他们将
    somedir/index.*
    somedir/

    一样对待,我也不会感到惊讶,但将此代码添加到每个页面的顶部也应该有效:

    <?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;
    }
    ?>
    
    
    
  • 除了在任何地方更改所有链接外,更简单的解决方案是使用重写规则。确保它是一个永久的重定向,否则谷歌将继续使用旧的链接(没有index.php)。如何做到这一点完全取决于您的web服务器,但对于apachehttpd,它看起来类似于下面给出的示例
  • 对。至少我听说过。很少有人确切知道。但是(作为“保持一致”)。一定要检查所有的文件
  • 重写规则的Apache配置:

    # in the generic config LoadModule rewrite_module modules/mod_rewrite.so # in your virutal host RewriteEngine On # redirect everything that ends in a slash to the same, but with index.php added RewriteRule ^(.*)/$ $1/index.php [R=301,L] # or the other way around, as suggested # RewriteRule ^(.*)/index.php$ $1/ [R=301,L] #在通用配置中 LoadModule rewrite_module modules/mod_rewrite.so #在您的虚拟主机中 重新启动发动机 #将以斜杠结尾的所有内容重定向到相同的位置,但添加了index.php 重写规则^(.*)/$$1/index.php[R=301,L] #或者相反,正如建议的那样 #重写规则^(.*)/index.php$$1/[R=301,L]
    我不确定/category/和/category/index.php是否被视为搜索引擎优化的两个URL,但它很有可能以某种方式影响它们。只是为了确定,快速的改变并没有什么错

    一些想法:

    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以发送某人或链接到该页面,他们将最终链接到该页面的正确URL

    链接URL

    他们认为其他页面链接到你的页面的方式对seo更重要。确保所有站点内链接都使用正确的URL(不带/index.php),并且如果有“链接到此页面”功能,则不包括/index.php部分。您无法控制每个人链接到您的方式,但您可以控制它,就像第1项中的脚本一样

    URL路由

    您可能还想考虑使用某种框架或独立的URL重路由方案。它可以使它有更多的关键字,等等


    请参见此处的示例:

    我同意所有人的意见,他们说要放弃index.php。请不要强迫访问者键入index.php,如果不键入,可能会得到相同的结果

    你没有说你是在IIS还是Apache服务器上。 可以将IIS设置为假定index.php是默认页面,以便http://mywebsite.org/在不包含index.php的情况下正确解析

    我想说的是,如果您想包含默认页面并强制用户在url中键入页面名称,请使页面名称对搜索引擎和访问者有意义

    例如:

    http://mywebsite.org/teaching-web-scripting.php 
    
    对于搜索引擎优化排名来说,它远比

    http://mywebsite.org/index.php
    

    你可能想把SEO添加到你的标签中。事实上,我建议换一种方式,将“mydir/index.php”重定向到“mydir/”短URL的排名高于长URL的排名,因此对于相同的搜索词,“mywebsite.org/category/”的排名高于“mywebsite.org/category/index.php”(所有其他因素都是相同的)。@BoltBait:有消息来源吗?哪家搜索引擎会这样处理?我当然不会,但这是我的老板确信的。公正的评论。这不是最初的问题,这就是为什么我使用这个例子,但我也更喜欢没有“index.php”的例子,它看起来“更干净”。@migala77是的,删除了评论,忘记了他明确要求mydir/index.php成为规范。将其添加为问题的注释。