Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [namazu-users-ja] Re: page /w noindex has indexed
- From: Jun Morimoto <morimoto@xxxxxxxxxxxxxxxxxx>
- Date: Tue, 11 Apr 2000 22:46:40 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 00366
- References: <20000408013409Z.morimoto@xantia.citroen.org> <20000408082203H.satoru-t@is.aist-nara.ac.jp>
もりもとです
In article <20000408082203H.satoru-t@xxxxxxxxxxxxxxxxxx>,
at Sat, 08 Apr 2000 08:22:03 +0900,
on [namazu-users-ja] Re: page /w noindex has indexed,
Satoru Takabayashi <satoru-t@xxxxxxxxxxxxxxxxxx> wrote:
> Jun Morimoto <morimoto@xxxxxxxxxxxxxxxxxx> wrote:
>
> >● 現象
> >
> >NOINDEX 指定のページが mknmz 対象になってしまう
> >
> >● 解説
> >
> ><HEAD> 内に <META NAME="ROBOTS" content="NOINDEX"> があり、
> >かつ <A NAME="foo"></A> 指定のあるページを
> >--html-split を指定して mknmz すると、
> >--robots も指定してあるにかかわらず、
> >最初の A NAME="" 以降のセクション? がインデキシングされてしまう。
とりあえずパッチ。namazu 2.0.4 の pl/htmlsplit.pl が対象です。
● 対処
htmlsplit.pl は、元ファイルのヘッダの
<LINK REV="MADE" HREF="mailto:誰"> を軽く調べ、分割後の HTML 群の
ヘッダに施すようになっている。
本パッチは、元ファイルの <HEAD> 〜 </HEAD> 内にある <META .. >
を拾って、分割後の HTML 群の <HEAD> 〜 </HEAD> 内に挿入するように
したもの。
特に <META NAME="ROBOTS" content="NOINDEX"> のみを対処したわけではない。
● 対処2
<LINK REV="MADE" HREF="mailto:誰"> だけでなく
<LINK REV="MADE" HREF=mailto:誰>
<LINK HREF="mailto:誰" REV="MADE">
などでも拾えるようにした。ただ、しょせん正規表現なので、気合いが
はいった処理ではない。
> 対策としては次の 2つが考えられます。
>
> 1. しぶしぶ直す
> - 直せなくはないが、どろどろとプログラムが複雑化する
あまりエレガントではないですが、NOINDEX に特化した adhoc な fix とかで
はないので、許容範囲かな?
> - すでに複雑性は限界に近づきつつある
> - --robots は僕は使っていない
> - よって、直す気が起きない
>
> 2. これを機会に --robots という毛深い (hairy) 機能は廃止する
> - % find . -type f -name '*.html' | \
> xargs grep -l '<META NAME="ROBOTS" content="NOINDEX">' > list;
> mknmz --target-list=list
> といった感じでなんとかなりますよね。必要とあれば、専
> 用の shell/perl script を用意してもいいです。
なるほど。「これはシカトしてね」なファイルを選り分ける機能を別プログラ
ムにしてしまえば、本体をややこしくしたり バグを混ぜたりすることなく、
機能追加していけますね。
adhoc な対処、いや local hack もより手軽になるかも。
むかしあった .htaccess を見る機能を よりそれっぽくして復活とか、
Netscape Commerce Server の .nsconfig とか、
あるいは .cvsignore を見ちゃうとか。
# 「このファイルを除外したい/してくれ」というのは、カイシャのサイトを
# やっているとなかなか面倒かつ切実な問題なんですね ;_;
> (誰か作ってくれないかな)
うーむ、ひまができたら... ^^;
.. 森本 淳 (Jun Morimoto) ...........................................
.. morimoto@xxxxxxxxxxxxxxxxxx http://www.toybox.ne.jp/~morimoto/ ...
*** namazu-2.0.4/pl/htmlsplit.pl- Tue Apr 11 21:43:02 2000
--- namazu-2.0.4/pl/htmlsplit.pl Tue Apr 11 22:02:19 2000
***************
*** 35,40 ****
--- 35,41 ----
<head>
<link rev=made href="mailto:${author}">
<title>${subject}</title>
+ ${meta}
</head>
<body>
<hr>
***************
*** 55,60 ****
--- 56,62 ----
my %info = (
'title' => get_title(\$cont),
'author' => get_author(\$cont),
+ 'meta' => get_meta(\$cont),
'anchored' => "",
'name' => "",
'base' => $base,
***************
*** 108,114 ****
# <LINK REV=MADE HREF="mailto:ccsatoru@xxxxxxxxxxxxxxxxxx">
! if ($$contref =~ m!<LINK\s[^>]*?HREF=([\"\'])mailto:(.*?)\1\s*>!i) { #"
$author = $2;
} elsif ($$contref =~ m!.*<ADDRESS[^>]*>([^<]*?)</ADDRESS>!i) {
my $tmp = $1;
--- 110,116 ----
# <LINK REV=MADE HREF="mailto:ccsatoru@xxxxxxxxxxxxxxxxxx">
! if ($$contref =~ m!<LINK\s[^>]*?HREF=([\"\']*)mailto:(\S*)\1.*>!i) { #"
$author = $2;
} elsif ($$contref =~ m!.*<ADDRESS[^>]*>([^<]*?)</ADDRESS>!i) {
my $tmp = $1;
***************
*** 119,124 ****
--- 121,140 ----
return $author;
}
+ sub get_meta ($) {
+ my ($contref) = @_;
+
+ my $meta = undef;
+
+ for my $line (split("\n", $$contref)) {
+ if ($line =~ /<META /i) {
+ $meta .= $line;
+ }
+ }
+
+ return $meta;
+ }
+
sub write_partial_file($$$$$) {
my ($cont, $name, $anchored, $id, $info_ref) = @_;
***************
*** 129,134 ****
--- 145,151 ----
my $orig_title = $info_ref->{'title'};
my $prev_name = $info_ref->{'name'};
my $prev_anchored = $info_ref->{'anchored'};
+ my $meta = $info_ref->{'meta'};
html::remove_html_elements(\$prev_anchored);
$prev_anchored =~ s/^\s+//;
***************
*** 149,154 ****
--- 166,172 ----
my $header = $Header;
$header =~ s/\$\{subject\}/$title/g;
$header =~ s/\$\{author\}/$author/g;
+ $header =~ s/\$\{meta\}/$meta/g;
print $fh $header;
print $fh $cont;