交流|分享
category: SEO
tags:
[http://www.weblab.co.jp/blog/2009/03/url_canonical.html より]
先月、Google、Yahoo、MSNの大手検索エンジンが共通の規格として、重複コンテンツ問題解消のための新しいタグ、「canonical」属性のサポートを開始しました。
Webサイトでは、同じ内容のページが異なるURLで表示されてしまうというケースが存在します。

最も身近な例としては「www」の有無、その他、動的URLで生成されるページに.htaccessを設定し、静的URLでも表示可能にしている場合、また、URLがトラッキング用のパラメータを含んでいる場合等が挙げられます。

例)

http://www.example.com/products/detail.php?product_id=01

http://www.example.com/products/detail01.html

http://example.com/products/detail.php?product_id=01

http://example.com/products/detail01.html

↑上記URLで全て同内容のページが表示される

検索エンジンは重複したURLを全て巡回した上で最も適したURLを選択しますが、管理者の意図通りのURLを選択してくれるとは限りません。
そんな時、このcanonical属性を記述することで、管理者から検索エンジンに対して、適切なURLを通知することができます。

このタグは、同一ドメイン内でのみ有効で、title要素やmeta要素のkeywords、description属性と同じく、HTMLのhead要素内に置かれます。

<link rel=”canonical” href=”http://www.example.com/products/detail01.html” />

上記のように、管理者がインデックスさせたいURLを指定することで、検索エンジンに重複するコンテンツの中から登録すべきページを伝えることができるようになります。

現時点では、Googleのみ検索エンジンへの対応が完了、Yahoo!、MSNは数ヶ月以内に対応というアナウンスが出ています。
まだ登場して間もないタグですので、有効な使用方法、使用上の注意点など、新しい情報がまとまり次第、続報として紹介したいと思います。

参考サイト
http://www.sem-r.com/09/20090213153711.html
网上看到的,直接复制过来了,大意就是在<head>里添加下面这段代码。
<link rel=”canonical” href=”http://www.example.com/products/detail01.html” />
这样的话搜索引擎可以在大量不同链接但内容相同的网页中知道哪一个链接才是管理者想要被索引的。
category: SEO
tags:

301重定向已经过很多次了,它可以将网站的主域名和二级域名规范到一个url上,使网页在搜索引擎里只能通过唯一的一个地址可以访问到,以免因重复内容造成降权。所以凡是使用linux的主机,我都会定义个301重定向,以利于SEO。昨天照例把htaccess传到服务器上,没想到传上后网站无法访问,一删除就恢复正常。看了很多遍代码,也没发现什么问题。 干脆就重新学习下URL重写方法。

 

规范化URL

描述:
在有些web服务器上,一个资源会拥有多个URL。在实际应用和发布中应该使用的是规范的URL,其他的则是简写或者只在内部使用。无论用户在请求中使用什么形式的URL,最终看见的都应该是规范的URL。
解决方案:
对所有不规范的URL执行一个外部HTTP重定向,以改变它在浏览器地址栏中的显示及其后继请求。下例中的规则集用规范的/u/user替换/~user,并修正了/u/user所遗漏的后缀斜杠。
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]

规范化主机名

描述:
这个规则的目的是强制使用特定的主机名以代替其他名字。比如,你想强制使用www.example.com代替example.com,就可以在以下方案的基础上进行修改:
解决方案:
对运行在非80端口的站点

RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R]

对运行在80端口的站点

RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R]

 

参考了上面的规则,发现自己原先的代码里少了个!号,加上就恢复正常了。
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^do-javascript.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.do-javascript.com/$1 [r=301,nc]