#$Id: urlhack.inc.pl.ja.pod,v 1.239 2011/10/19 22:07:02 papu Exp $

__END__
=encoding euc-jp

=head1 NAME

urlhack.inc.pl - PyukiWiki プラグイン

=head1 概要

SEO対策の為に、URLから ? を取り除いて検索エンジンにヒットしやすくするプラグイン

=head1 説明

GoogleやYahoo等のロボット型検索エンジンでは、明らかにスクリプトであるようなページをクロールしにくいようになっています。そのために、サイトの検索エンジンの結果がランクダウンしてしまう可能性があります。

そのために、URLから ? 等を取り除いて、PyukiWikiを動的ページではなく、静的ページとしてロボットに認識させる方法を提供します。


WikiName や、[[BracketName]] でリンクしても、以下のような階層下にあるようなページにリンクできるようにします。

 PyukiWiki/Glossary/WikiName
 PyukiWiki/Sample/BracketName

先に、階層下よりも、実際のページ名で検索しますので、名前が重複する場合はすべてのページ名でエイリアス等を使用してリンクして下さい。

=head1 使用方法

=head2 プラグインを有効にする

urlhack.inc.cgi にリネームして下さい。

=head2 PATH_INFOを使用する場合

デフォルトでは、PATH_INFOを使用するようになっていますので、そのまま使用利用できます。
対応していないサーバーもあるものの、こちらのが軽快に動作します。

http://example.com/ 等、CGI名をTOPページとして省略させるようなURLには対応していません。

http://example.com/index.cgi が実態であれば B<index.cgi>をB<wiki>にリネームしてから、
以下の記述を .htaccessに加えることをおすすめします。

 <FilesMatch "^wiki$">
    ForceType application/x-httpd-cgi
 </FilesMatch>

こうすることで、 http://example.com/wiki をTOPページとすることができます。


=head2 404 Not foundエラーとしてサーバーからリダイレクトされるものを使用する場合

こちらのが多くのサーバー、及び、省略されたURLに対応できますが、アクセスされる度にサーバーにエラーログが残るという問題があります。

ただし、nphスクリプトが対応していないサーバーでは使用できません。

=over 4

=item index.cgi etc...

nphスクリプトとして動作させるために、nph-index.cgi 等にリネームします。

=item urlhack.inc.cgi

$use_path_info=1; を $use_path_info=0; に変更します。

=item .htaccess

 DirectoryIndex B<nph-index.cgi> index.cgi wiki.cgi pyukiwiki.cgi index.html

 RewriteEngine on
 RewriteBase /

 RewriteCond %{REQUEST_URI} !^/(attach|cache|image|skin)
 RewriteRule ^\?(.*)$ ./index.cgi?$1 [L]
 RewriteCond %{REQUEST_URI} !^/(attach|cache|image|skin)
 RewriteRule ^(.+)/$ ./index.cgi/$1 [L]
 RewriteCond %{REQUEST_URI} !^/(attach|cache|image|skin)
 RewriteRule ^$ ./index.cgi [L]

 ErrorDocument 400 /nph-index.cgi?cmd=servererror
 ErrorDocument 401 /nph-index.cgi?cmd=servererror
 ErrorDocument 402 /nph-index.cgi?cmd=servererror
 ErrorDocument 403 /nph-index.cgi?cmd=servererror
 ErrorDocument 404 /nph-index.cgi?cmd=servererror
 ErrorDocument 500 /nph-index.cgi?cmd=servererror

=back

=head1 設定

=over 4

=item $urlhack::use_path_info

PATH_INFO環境変数を使用する場合は１、404 Not found エラーを利用する場合は０にします。

=item $urlhack::fake_extention

現在、申し訳ありませんが、偽装できるのは「/」のみです。
拡張子等をつけて、偽装します。

 $::fake_extention='/';
 http://example.com/FrontPage/
 http://example.com/PyukiWiki/Download/
 http://example.com/a5d8a5eba5d7/

=item $urlhack::use_puny

 0:16進エンコードを使用します。
 1:punyエンコードを使用します。少しURLが短くなります。

=item $urlhack::noconvert_marks

指定された文字のみで構成されるページ名の場合、エンコードをしません。

 0: 無条件エンコードをする
 1: 数字とアルファベットのみで構成されるページのみエンコードをしない
 2: 数字、アルファベット、dot(.)、slash(/)で構成されるページのみエンコードをしない

=back

=head1 上書きする関数

関数 make_cookedurl を上書きします。

=head1 参考

=over 4

=item PyukiWiki/Plugin/ExPlugin/urlhack

L<http://pyukiwiki.sourceforge.jp/PyukiWiki/Plugin/ExPlugin/urlhack/>


=item PyukiWiki CVSレボジトリ

L<http://sourceforge.jp/cvs/view/pyukiwiki/PyukiWiki-Devel/lib/urlhack.inc.pl?view=log>

=back

=head1 著者

=over 4

=item ななみ

L<http://nanakochi.daiba.cx/> etc...

=item PyukiWiki Developers Team

L<http://pyukiwiki.sourceforge.jp/>

=back

=head1 ライセンス

Copyright (C) 2005-2011 by ななみ.

Copyright (C) 2005-2011 by PyukiWiki Developers Team

License is GNU GENERAL PUBLIC LICENSE 2 and/or Artistic 1 or each later version.

This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

=cut
