【问题标题】:SEO : dealing with duplicate url but same pageSEO:处理重复的 url 但相同的页面
【发布时间】:2014-12-04 11:16:00
【问题描述】:

我正在用 PHP 运行电子商务网站。我将规则改写为,

RewriteRule ^[A-Za-z0-9-_]+/([A-Za-z0-9-_]+)/?$ product.php?seo_id=$1 [NC,L] #
RewriteRule ^([A-Za-z0-9-_]+)/?$ catalog.php?seo_id=$1 [NC,L] #

有些产品会有重复的链接,但我希望它们在谷歌中作为我喜欢的一个链接。

例如

http://example.com/laptop/dell-1055
AND 
http://example.com/products/dell-1055

在我的网站中,我经常使用这两个 URL。两个 URL 都应该可以工作,但我更喜欢第一个 URL (http://example.com/laptop/dell-1055),这些 URL 应该在谷歌而不是第二个 URL 中编入索引。

如何实现。 (我知道它是通过规范或 301 重定向实现的,但我不知道如何实现它)

注意:两个 URL 都在一个页面中处理(例如product.php

【问题讨论】:

    标签: php .htaccess url url-rewriting seo


    【解决方案1】:

    您需要有 301 规则,将所有旧的新 URL 重定向到具有 永久重定向 的新 URL,这将强制搜索引擎只缓存漂亮的 URL:

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{THE_REQUEST} \s/+catalog\.php\?seo_id=([^\s&]+) [NC]
    RewriteRule ^ laptop/%1? [R=301,L]
    
    RewriteCond %{THE_REQUEST} \s/+product\.php\?seo_id=([^\s&]+) [NC]
    RewriteRule ^ products/%1? [R=301,L]
    
    RewriteRule ^[\w-]+/([\w-]+)/?$ product.php?seo_id=$1 [L,QSA]
    
    RewriteRule ^([\w-]+)/?$ catalog.php?seo_id=$1 [L,QSA]
    

    【讨论】:

    • 使用规范有什么不好?我想让两个链接都能正常工作,但希望将第一个链接包含在搜索引擎中。
    • 没什么坏处,但您需要在规范标签中包含 每个 URL。所以今天它可能只是http://example.com/laptop/dell-1055,但想象一下,包括您的网站将来会在/laptop/ 下列出的所有笔记本电脑。您将必须始终添加这些规范 URL,但此重定向规则只是一劳永逸的交易。是的,这也强制仅将漂亮的 URL 编入索引。
    • 如果我将 php 生成的代码放在规范标签中会怎样。
    • 您可以这样做,但这样做的效率很低,因为 PHP 代码还需要查询一些数据库。因此,mod_rewrite 结束后还有 2 个额外的缓慢步骤:1) PHP 2) 数据库查询并记住如果您有数千台笔记本电脑,您的页面大小是多少。
    • 嘿,但是笔记本电脑/是动态的。我不能把它放在.Htaccess 中。可能有不同的关键字。该页面是完全动态的。
    【解决方案2】:

    在此文件生成的 HTML 顶部放置一个规范 URL <link> 标记:

    <link rel="canonical" href="http://example.com/laptop/dell-1055" />
    

    【讨论】:

    • 是否可以将此代码放在笔记本电脑/dell-1055 的同一页面上?
    • 是的。您可以有一个规范的 URL 指向它自己。它不会伤害任何东西。
    猜你喜欢
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2014-04-09
    • 2018-01-10
    • 1970-01-01
    • 2010-10-09
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多