[SEO] ソフト404エラー発生通知

本日、ウェブマスターツールを見たら、クロールエラーが発生していました。
そういえば、ディレクトリを移動させたWebページが有るから、それでリンク切れにちゃったたかな?

と、軽く思ったのですが、404対策は済んでるぞ?なんで?

よくよく見ると、ソフト404エラーとなって居ます。
ん?ソフト404エラーって?

クロールエラーの詳細を見ようと、クリックしたところ、左サイドのナビゲーションに
と言うのが有りましたので早速見てみることに。。。

うーん、良く理解できないが、どうやら該当Webページのファイルが無いから404エラーなのに、異なるステータスコードで返ってきてしまっているので、おかしいよという警告らしいです。

リダイレクトしているので。。。302で返えしているってことでしょう。。。
さて、どうやって直せば良いのやら。。。

ちなみに、軽く調べたら.htaccessが使用出来る環境だと、相対パスで404対応メッセージのWebページを指定してあげると良いそうです。私のレンタルサーバの環境はIISだし、自由が効かないので。。。困ったなぁ。。。

カテゴリー: SEO

[HTML] 失敗談^^;・・・相対パスと絶対パス

現在、SEOの勉強のためにSEOの施策サイトを作成しています。
そのサイトでカテゴリを少しでも容易に管理できるよう2段のフォルダ階層としています。
全画面共通のヘッダー部分は、テンプレート化して使用しています。

そのテンプレートで、失敗をしていました(T_T)。
気をつけていれば全く問題のないことなのですが、メニューのボタンのonclickの中のURLの記述を”/”を付けづに記述してしまい、相対パスになって居ました。
ちゃんとリリース後確認していれば良かったのですが、していませんでした。。。。
また、JavaScript内の記述のため、Googleマスタツールのリンク切れ報告にも引っかかりませんでした。
しょうもないミスをしていました。。。

そこで、開発備忘録という内容でもないのですが、悔しいのでURLを記述する際の「相対パスと絶対パス」についてメモっておきます。

相対パスと絶対パス

URLを書く際に絶対パスを使用することも有りますが、自サイトのWebページをリンクする際は、相対パスのほうがデバッグする際に便利なので相対パスを使う方が多いと思います。
ちなみに、Googleは絶対パスの方が良い様なことを言って居ると他のブログで読みましたが、どちらを使ってもSEO的には問題ないそうです。

絶対パスは、
・HTTP(S)のプロトコル指定
・サーバ(ホスト)のドメイン指定
・Webサイト・Webページの指定
と、全て指定する方法です。

相対パスは、
現在の位置から見た、Webサイト・Webページの指定になります。
で、指定の仕方には、「..」と「/」を使うことができます。

  1. 同じディレクトリに存在するWebページAAA.htmを指定する時は、なにも付けず「AAA.htm」で。
  2. 一つ上のディレクトリに存在するWebページAAA.htmを指定する時は、「../」を頭に付け「../AAA.htm」で。
  3. 一つ下のディレクトリ「DDD」に存在するWebページAAA.htmを指定する時は、「DDD/」を頭に付け「DDD/AAA.htm」で。
  4. 二つ上のディレクトリに存在するWebページAAA.htmを指定する時は、「../../」を頭に付け「../../AAA.htm」で。
  5. 二つ下のディレクトリ「DDD/EEE」に存在するWebページAAA.htmを指定する時は、「DDD/EEE/」を頭に付け「DDD/EEE/AAA.htm」で。
  6. Webサイトのルートディレクトリに存在するWebページAAA.htmを指定する時は、「/」を頭に付け「/AAA.htm」で。
  7. Webサイトのルートディレクトリの一つ下のディレクトリ「CCC」に存在するWebページAAA.htmを指定する時は、「/CCC/」を頭に付け「/CCC/AAA.htm」で。

今回は、「/」を頭に入れ忘れて居ました。。。。

カテゴリー: HTML

[SEO] 8月7日 サイトの状況

seo学習のメモです。

7月の終わりに大きくTitleとh1タグの使い方を変更させて様子を見ています。
使い方を変えた理由は、「SEO」単体で全く検索に引っかからないので、「ひょっとすると変えてみたら・・・どうかな?」という気分になったの変更させてみました。
Titleやh1タグをより直接的なフレーズにしました。

結果は、以前と変わらず。。。自分のサイトタイトル名の検索も落ちてしまいました^^;
要は、「SEO」単体ではもっとサイトの力がないと何をしてもダメとうい状況のようです。

ちなみに、以前と同じ語彙検索で、185/164,000
Index数は、51
内部リンク数は、知らない間に集計が面倒なくらい多くなって、大体70くらい。

とりあえず、最近コンテンツ作成をしていないので、ペースを上げたいと思います。

カテゴリー: SEO

日立、東大と開発中の「超高速データベースエンジン」を製品化

SEOの経過待ちついでにブログも放置してしまっていました^^;

少し前に『日立、東大と開発中の「超高速データベースエンジン」を製品化』と言う記事が出ていました。
データベースに興味のある方は読まれたかと思います。
日経新聞

データベースに関しては仕事で少し使用していることもあり、元々興味もあったのですが、超巨大なデータは扱うことも少ないため、それほど気に留めて居ませんでした。(ちなみに、仕事では200G程度のデータ量)
それが最近SEOを学習し始めてGoogleのBigTableの処理などを思うと少し気なり始めました。

今回の「超高速データベースエンジン」は記事を読んで頂ければ概要が判ると思いますが、超高速データベースエンジンは「非順序型実行原理」に基づいてデータ処理することで、従来型データベースエンジンに比べて、大幅な検索性能向上が図れるという代物で、RDBMSが開発された当初のコンピュータと現在のコンピュータのスペックの違いに着目して再最適化を図った設計になっています。
現在は100倍程度の高速化が実現できているそうですが、最終目標は2013年度中に、従来型データベースエンジンに比べ800倍程度のデータ検索性能を達成することだそうです。

今回の仕組みは、実行論理が許す限り大量の入出力を発行することで、ディスクより高速化の進んでいるプロセッサ資源の活用と、膨大な数のディスクドライブの並列アクセスによって、効果的な性能バランスの実現を狙うものです。やはり肝はデイスクIOの待ち時間を減らすことです。
ただ、デイスクIOの待ち時間を減らすと言っても、問合せの数が膨大なためIOの数も膨大になり、その膨大なIOを支えるためにOSやハードウェアを含めたシステムの設計、構築が必要となり簡単に導入できる訳では無さそうですが、面白い製品だと思います。

簡単には手に入らないものですが、このような高速な検索ができるようになると、いろいろな分野で詳細な比較、詳細な追跡、解析が今までより容易に進めることができるようになるため、今までと異なった次元で判断が可能になると考えています。
機械が状況を出力するデータ量は人間が発信するデータ量の何倍になりますが、現在は解析ができないことからそれなりに絞り込んだ量で分析・解析を行なっています。将来はフルデータで解析が行えるため、実用度の高いデータが取れそうです。

[seo] 7月9日 サイトの状況

seo学習のメモです。

状況は、48/159,000でした。
Index数は46。
内部リンク数は31件でした。

忙しくてチェックできていない間に48まで上がっていました。
この調子で40台上位になってくれると嬉しいです。

カテゴリー: SEO

[seo] 7月2日 サイトの状況

seo学習のメモです。

状況は、51/530,000でした。
Index数は43。
内部リンク数は18件でした。

忙しくてチェックできていない間に51まで上がっていました。
この調子で40台を目指します。

カテゴリー: SEO

[seo] 6月27日 サイトの状況 10万も増えてるなんて。。。

seo学習のメモです。

状況は、68/552,000でした。
Index数は37。
内部リンク数は18件でした。

コンテンツ数が増えてるのに下がってしまいます。
しかし、総検索件数も10万増えているので、仕方のないことなのかもしれません。
でも、1日で10万件も増えるなんて。。。裏でなにをしているのでしょうね。

昨日、rel canonical属性を入れて見たのですが、無料のサイトチェックでホームページのキーワード出現率が見られなくなってしまいました。
そのため、思いきってIndex.htmを削除することにしました。
一時期、検索で圏外になってしまうかも知れませんが、異常な状態から正常な状態にすることなので致し方ないとの判断です。
あと、ついでといってはなんですが、ホームページ(サイト)のタイトルも少し修正しました。この際なので、一緒にやってしまおうという腹です。

昨日、少しSEOのことが理解できてきたかも発言をしたのですが、早くも訂正です。
まだまだ、判りません^^;
ホームページのタイトルで検索すると順位が67なんですが、タイトルのキーワードを少し変えると簡単に検索圏外になってしまいます。ビッグキーワードなので仕方ないのですが、検索結果の後ろの方の順位のページを見ると、3行程度しか情報が書いてないにも関わらず、検索されているのです。内容の質も量も明らかに私のサイトの方が有効なのにです。
結果、なぜそういう事が起こるのか、わからないうちは、まだまだってことですよね。。。

カテゴリー: SEO

[seo] 6月26日 サイトの状況 rel canonical属性を入れてみる

seo学習のメモです。

状況は、62/441,000でした。
Index数は36。
内部リンク数は15件でした。

全く昨日と同じ状況でした。
ただ、ウェブマスターツールでホームページとURLのタイトルが重複しています。といえエラーが報告されました。
一番はじめに作成した時の名残のhtmが残っているためだと思うのですが、今更どうやって直すのか。。。と思案に暮れています。とりあえず、
<link rel=”canonical” href=”ここにURL” />
というリンクタグを入れて様子を見てみます。

後2日でSEOの勉強を初めて1月経ちます。
そんなに集中して行えたわけではないので、ぼちぼち勉強している程度なんですが、自分なりに「こうしたらどなるんだろう?」と思うことが出てきましたので、さっぱりわからない状況から少し理解が進んだのかなとも思っています。
順位が50以内に入ることを目指して行きたいと思います。

カテゴリー: SEO

[seo] 6月25日 サイトの状況

seo学習のメモです。

状況は、62/441,000でした。
Index数は36。
内部リンク数は15件でした。

土曜日に65に上がったので直ぐに下がると思いきや、まだ61に居ます。
とりあえず、順位で一喜一憂しても仕方ないので、ためになるコンテンツの追加を考えて行きたいと考えています。
インデックスは順調に伸びています。
内部リンクだけでもページランクは付くそうなので、ページランク1を目指したいです。
ページランクは、検索順位に影響を与えない旨の情報も有ったり、約200項目のうちの1つの項目に過ぎないという情報も有ったりしますが、そもそもがページランクの考え方が検索順位に大きく影響を与えていると思って居ますので、その約200要素のうちの幾つかの目安になると考えています。
なので、ページランクを今のところ内部リンクだけで上げてみたいと考えています。
上がった時には検索順位の要素も自然と上がっていると思いますので。

カテゴリー: SEO

[SQL Server] 順位付け関数

久しぶりにSQL Serverの開発備忘録です。
seoばかりアップしてて、開発備忘録では検索順位が悪いので、開発備忘録を多めに書きます^^

で、順位付け関数ですが、先日同僚が使って居るのを見て、整理しようと思いたちました。
順位付け関数には、

  1. row_number
  2. rank
  3. dense_rank
  4. ntile

の4種類が有ります。

基本的な使用方法は、
 関数() over(order by カラム名)
 ntile(数値)over(order by カラム名)
の様な感じで書きます。
overの中には、パーティションも入れることができ、例えば部門やカテゴリ内での順位付けもできます。
そんな場合は、関数() over(partition by 部門,カテゴリ order by カラム名) のようになります。

それぞれの関数の返す値ですが、

  1. row_numberは、overで指定された条件の結果セットに基づいて連続した数値を返します。なので、oder byで指定したカラムの値が同じ場合、どちらの行が上に来るかは保証は有りません。
  2. rankは、ランキングなので、oder byで指定したカラムの値が同じ場合、同位となり、次に来る行の順位は飛ぶことになります。1位1位3位という感じですね。
  3. dense_rankは、rankに似ていますが、順位が飛ぶことがなく1位1位2位のようになります。
  4. ntileは、グループ分けをしてくれる感じです。ntile(4)とするとoverで指定された条件の結果セットに基づいて4行づつ同じ数値を返してくれます。ただし、行が4で割れないと後ろの方のグループで3行とかに調整されます。

具体的な例を以下に示します。
データ:
declare @tbl1 table(employ_cd int,section_cd int, uriage_kingaku int, rieki_kingaku int)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000001,001,180,10)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000011,001,150,9)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000012,001,220,15)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000013,001,210,14)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000014,001,180,11)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000015,001,190,12)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000016,001,200,13)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000017,001,210,14)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000018,001,220,15)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000019,001,200,10)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000020,002,200,11)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000030,002,250,15)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000040,002,220,15)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000050,002,210,10)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000060,002,220,11)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000070,002,230,12)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000080,002,240,13)
insert into @tbl1 (employ_cd, section_cd, uriage_kingaku,rieki_kingaku) values (000000090,002,250,14)

検索:
select row_number() over(order by rieki_kingaku desc, uriage_kingaku desc) as row_number
, rank() over(order by rieki_kingaku desc, uriage_kingaku desc) as rank
, dense_rank() over(order by rieki_kingaku desc, uriage_kingaku desc) as dense_rank
, ntile(3) over(order by rieki_kingaku desc, uriage_kingaku desc) as ntile, * from @tbl1 S1

結果:
row_number rank dense_rank ntile employ_cd section_cd uriage_kingaku rieki_kingaku
———- —- ———- —– ——— ———- ————– ————-
1      1      1      1      30      2      250      15
2      2      2      1      40      2      220      15
3      2      2      1      12      1      220      15
4      2      2      1      18      1      220      15
5      5      3      1      90      2      250      14
6      6      4      1      17      1      210      14
7      6      4      2      13      1      210      14
8      8      5      2      80      2      240      13
9      9      6      2      16      1      200      13
10      10      7      2      70      2      230      12
11      11      8      2      15      1      190      12
12      12      9      2      60      2      220      11
13      13      10      3      20      2      200      11
14      14      11      3      14      1      180      11
15      15      12      3      50      2      210      10
16      16      13      3      19      1      200      10
17      17      14      3      1      1      180      10
18      18      15      3      11      1      150      9

少し見辛いですが、こんな感じに並びます。
partitionを加えた結果は出しませんが、SQLはこんな感じになります。

select row_number() over(partition by section_cd order by rieki_kingaku desc, uriage_kingaku desc) as row_number
, rank() over(partition by section_cd order by rieki_kingaku desc, uriage_kingaku desc) as rank
, dense_rank() over(partition by section_cd order by rieki_kingaku desc, uriage_kingaku desc) as dense_rank
, ntile(3) over(partition by section_cd order by rieki_kingaku desc, uriage_kingaku desc), * from @tbl1 S1