HTTPS化 Edit

転送の設定方法(ウェブ一般の方法)は方々に載っているが,実際にこのサイトで,特にPukiWikiで動かすには修正が必要だった。2018年 3月 3日

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://over.6pb.info$1 [R=301,NE,L]

NEが必要。また,URLの後ろを「/$1」とすると「/」が二重に付加された。

スパムとmod_rewrite Edit

mod_rewriteを使ってスパムを排除する。mod_rewriteの情報はネットに多いが,PukiWikiに応用するにはほんの少し注意点がある。

  • 参考までに,mod_rewrite一般で躓きやすいのは次の2点。
    1. FileInfoとOptionsをoverrideできること。(mod_rewrite - Apache HTTP Server
    2. Options +FollowSymLinks
      • 「ディレクトリ単位の設定ファイル における書き換えエンジンを有効にする場合、これらのファイルに RewriteEngine On をセットし、かつ Options FollowSymLinks を有効に しなければなりません。」(Apache module mod_rewrite

課題1 Edit

http://over.6pb.info/wiki/index.php?cmd=read&page=2rand[0,1,1]&refer=NET/ServersMan@VPS

を排除したい。

解決 Edit

httpd.confまたは.htaccess に

RewriteEngine On
RewriteCond %{QUERY_STRING} ^cmd=read&page=2rand\[0,1,1].*$
RewriteRule ^/wiki/index\.php$ /wiki/? [L,R=404]
  • URLの?以下(QUERY_STRING)をRewriteRuleで直接定義することはできない。上記のようにRewriteCond %{QUERY_STRING}を介して定義する。
  • 置換文字末尾の?は,QUERY_STRINGを捨てる意味。

課題2 Edit

特定のコメントスパムが世界中からやってくる。(面白いことに,この型の攻撃は日本国内からは1件もないようだ。)意外にも,404 (Not Found)を返すようにしたら(従前は403 Forbiddenを返していた。),徐々に来なくなり,1週間ほどでぴたりと止んだ。

解決 Edit

# パターン1 QUERY_STRINGにServersManがあり,HTTP_REFERERは空。
RewriteCond %{QUERY_STRING} ServersMan
RewriteCond %{HTTP_REFERER} =""
RewriteCond %{HTTP_USER_AGENT} "=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
RewriteRule ^/wiki/index\.php$ /wiki/? [L,R=404]

# パターン2 QUERY_STRINGは空。HTTP_REFERERにServersManがある。(POST)
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP_REFERER} ServersMan
RewriteCond %{HTTP_USER_AGENT} "=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
RewriteRule ^/wiki/index\.php$ /wiki/? [L,R=404]
  • このサーバーではページ「NET/ServersMan@VPS」が攻撃対象となっている。
  • このように正規表現によらない条件指定もできる(Apache module mod_rewrite参照。)。空白が含まれるので""で囲っている。

短縮URL Edit

PukiWikiのページの内,ページ名が日本語のページ(全角文字をページ名に含むページ)のURLを人に紹介するのは若干はばかられる。長い意味不明のURLを伝えることになるから(FFなどでは一見長くないように見えるが,メールにコピペすれば驚く。)。各種URL短縮サービスを利用するのも一計だが,デメリットもある。他のやり方として,自分のサーバーのリダイレクト機能を利用する方法がある。但し,若干の注意が必要。

例えば,ページ

NET/日経新聞電子版

へ,

http://over.6pb.info/nikkei-wiki

でアクセスできるようにするには,.haccess等にUTF-8で

RewriteRule ^/nikkei-wiki /wiki/index.php?NET/日経新聞電子版 [R]

と記述する必要がある。UTF-8で書くのがキモ。URLエンコードした

RewriteRule ^/nikkei-wiki /wiki/index.php?NET/%E6%97%A5%E7%B5%8C%E6%96%B0%E8%81%9E%E9%9B%BB%E5%AD%90%E7%89%88 [R]

では期待通りに動かない。

アクセス記録が2つになる Edit

PukiWikiはページ名に/ (slash)を使うことで階層構造を表現できる。ページ名はそのままURLになっているので、URLにも/を含む。少し困ったことに、ページ名の/を、URLエンコードしたアクセス(/が%2Fに置き換えられている)と、していないアクセスが混在している。両者は最終的に表示されるページは同じであるものの、アクセス統計では(ソフトや設定次第だが)別々にカウントされる。URLが違うから。アクセス解析ソフトは、通常、一定の方針で「異なる」アクセスを同一視するので、PukiWikiの/も同一視すればよいだけだが、私の対応能力を超える。なお、PukiWikiのページ名を表す/を%2Fに置き換えるのは余計なことだ。インターネットの規格ではqueryの/をreserved purpose以外で使うときはURLエンコードする必要はない。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-11-23 (火) 12:56:36 (2706d)