PukiWiki
- バイズ at 2004-10-06 (水) 19:04:35
こんばんは。これは、Linux だけのやり方なのでしょうか。
今は Windows 2000 上で「HTMLに偽装」と「ディレクトリに偽装」を両方試しました。英語の WikiName だとどの方法でも上手くいきますが、日本語の WikiName になると forbidden エラーになります。Pukiwiki のバージョンは 1.4.3 です。- でぃあばぁ(管理者) at 2004-10-06 (水) 19:36:55
こんばんは

まず、この Tips は PukiWiki1.4.4 用なので 1.4.3 で動作するかどうかは未確認です。ご了承下さい。
ともあれ以下の手順で確認することをおすすめします。
なお、日本語がエンコードされていないような参照方法 (cubic9.com/ヘルプ.html) は様々な問題が絡んできますので、考慮しません。通常、PukiWiki上のリンク先はエンコードされているので、問題ないでしょう。- 「HTMLに偽装」のみを適用した状態に戻す。
- 「ヘルプ」にアクセスし、index.php? を消し、 末尾に .html をつけたURLでアクセスできるか確認する。
- アクセスできる場合
PHPスクリプトの修正ミスの可能性が高いです。
作業手順を確認して下さい。 - アクセスできない場合
Apacheのエラーログ(error_log)で、リクエストしたURLが
どのようなURLに書き換えられているか確認して下さい。
この場合は.htaccessの記述ミスが考えられます。
- バイズ at 2004-10-07 (木) 00:50:27
でぃあばぁさん、こんばんは
この手順は 1.4.4 照準の事を気づいていませんでした、すみません ^^;
この機能を Windows を導入したいので Linux のためでも運を試したかったのです。今は自宅のパソコンに 1.4.4 を入れて試してみようと思います。
/ヘルプ.html へはアクセスできませんでした。Windows 上では IE を使うと UTF-8 か SHIFT-JIS でしか未エンコードの URL を送信できないので。Apache のエラーログを参照するアドバイスはとても実践的で助かります。
またいろいろ試してみます。
ありがとうございました
- でぃあばぁ(管理者) at 2004-10-07 (木) 07:22:05
IE はそういう仕様なんですね。参考になります。あ。書き忘れてましたが、4.の場合 RewriteLogディレクティブで書き換えの様子がロギングできるので、こちらも試してみて下さいね

- でぃあばぁ(管理者) at 2004-10-06 (水) 19:36:55
- Logue at 2004-10-19 (火) 20:27:45
うーん。できれば一番外側の/は.htmlにしたい。ディレクトリが深いとGoogleのページランクが下がっちゃいます。
- Logue at 2004-10-19 (火) 20:29:07
このページを例に取ると、こうなるみたいな:http://cubic9.com/PukiWiki/%B2%FE%C2%A4/SEO%C2%D0%BA%F6.html
- でぃあばぁ(管理者) at 2004-10-21 (木) 00:57:13
ふむふむ。そういう基準もあるんですね。勉強になります。で、上記のようにしたい場合は
「階層はディレクトリにページはHTMLに偽装」パッチを使って下さい。
- でぃあばぁ(管理者) at 2004-10-21 (木) 00:57:13
- Logue at 2004-10-21 (木) 20:53:24
結局全部自分でやっちゃったんですけど、やってて思ったのはFrontPage?をindexに改名したほうが、スマートなのでは?って思いました。http://logue.xrea.jp/ところで、自分でもいろいろと検索してみると、Su-Jineというサイトに結構詳しく書いてありました。
- でぃあばぁ(管理者) at 2004-10-21 (木) 21:55:02
- でぃあばぁ(管理者) at 2004-10-21 (木) 21:55:02
- Logue at 2005-03-01 (火) 01:45
なんか、最近ヒットが悪くなったなぁと思っていたら、末尾の/が抜けると404になっていたことがわかりました。このサイトでは、どうやってリダイレクトさせていますか?
- でぃあばぁ(管理者) at 2005-04-16 (土) 00:45
現在のcubic9.comのApacheの設定は以下のようになっていて、一番下のslash.phpで無理やり補完をかけてます

RewriteEngine on RewriteOptions MaxRedirects=1 RewriteBase / # 実ファイルがある場合 RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.* - [L] # 「階層化とAutoLinkを両立」関連 RewriteRule ^\*/(.+)/$ index.php?plugin=search_redirect&word=$1 [L] # Blog RewriteRule ^Blog/(20[0-9]{2}-[01][0-9])/$ index.php?plugin=calendar_viewer&date=$1 [L] # 肝 RewriteRule ^(.+)/$ index.php?$1 [L] # 添付ファイル RewriteRule ^(.+)/attach/thumb/([^\.]+)_(.+)_([0-9]+)x([0-9]+)\..+$ index.php?plugin=attach&thumb=$2.$3&refer=$1&width=$4&height=$5 [L] RewriteRule ^(.+)/attach/([^/]+)$ index.php?plugin=attach&openfile=$2&refer=$1 [L] # RSS RewriteRule ^index\.rdf$ index.php?cmd=rss10pp [L] # 後方互換 RewriteRule ^(.+)\.html$ index.php?$1 [L] # /の補完をしてみる RewriteRule ^.+$ test/assist/slash.php?$0 [L]slash.phpの中身はこんな感じです。サニタイズしてスラッシュを付加するだけのPHPです。場当たり的過ぎますよねぇ

$arg = input_filter($_SERVER['QUERY_STRING']); header('HTTP/1.1 301 Moved Permanently'); header('Location: /'.anchor_replace(rawurlencode($arg)).'/');
- でぃあばぁ(管理者) at 2005-04-16 (土) 00:45
- at 2005-04-04 (月) 01:13
店 という名前のページを作ると、他ページからのリンクが聞かなくなるのですが
- at 2005-04-04 (月) 01:14
IEでは問題なく、Mozila系でのみ出る問題のようです。
- でぃあばぁ(管理者) at 2005-04-16 (土) 01:38
ウチの環境だとIEでも確認できます。時間がかかるかもしれませんが、調べてみますね。
- でぃあばぁ(管理者) at 2005-04-16 (土) 01:38
- at 2005-04-04 (月) 01:14
- しいたけ at 2005-05-07 (土) 11:59
こんにちは。htmlに偽装した場合のパッチは1.4.5で使用することはできるのでしょうか?
- でぃあばぁ(管理者) at 2005-05-07 (土) 12:52
こんにちは
上のパッチは1.4.4専用ですので、直接1.4.5に当てることは出来ません。ただ、パッチの内部を見ていただければ分かるかもしれませんが、やっていることは結構単純で、大半は「$script?$r_page」を「$r_page.html」に置換しているだけです。とりあえず、lib/make_link.phpさえ変更すれば本文内でのリンクには反映されますので、試してみてはいかがでしょうか 
- でぃあばぁ(管理者) at 2005-05-07 (土) 12:52
- しいたけ at 2005-05-07 (土) 15:38
お早い回答、非常に助かりました。早速試してみたいと思います!
- しいたけ at 2005-05-07 (土) 15:50
すみません、make_link.php内に 「$script?$r_page」 が見つかりません。他の部分を変えることで同じ結果を実現できますか?
- でぃあばぁ(管理者) at 2005-05-07 (土) 17:11
1.4.5では記述が若干修正されているのを忘れていました
「$script . '?' . $r_page」を「$r_page . '.html'」に置換すればいいと思います。- しいたけ at 2005-05-07 (土) 21:24
できました! 本当にありがとうございました!
- しいたけ at 2005-05-07 (土) 21:24
- mcyolmf at 2008-05-02 (Fri) 05:12
pDRedJsJF
- でぃあばぁ(管理者) at 2005-05-07 (土) 17:11
- はいろ at 2005-11-11 (金) 14:22
これまでindex.phpとadmin.phpでそれぞれREADONLYを個別に設定するような使い方をいていたのですが、今回「ディレクトリに偽装」の改造を導入したいと思いパッチを適用したところ、この方法が通用しないことに気づきました。こちらのサイトでは編集用の認証と、それに伴うツールバーの表示切替はどのようにされているのでしょうか?
- akkubzaay at 2008-07-21 (Mon) 17:37
OvujoNOF
- akkubzaay at 2008-07-21 (Mon) 17:37
- はいろ at 2005-11-11 (金) 14:24
認証をpukiwiki.ini.phpの$edit_authで設定し、公式の続・質問箱/282(下段)>http://pukiwiki.sourceforge.jp/?%E7%B6%9A%E3%83%BB%E8%B3%AA%E5%95%8F%E7%AE%B1%2F282の方法を使ってツールバーの表示を切り替えるよう試してみたのですが、この方法だとリンク先にも書かれているとおりindex.phpにアクセスしただけで認証ダイアログが表示されてしまいます。
- はいろ at 2005-11-11 (金) 14:25
ぎゃ、リンクをミスりました。ごめんなさい。
- でぃあばぁ(管理者) at 2005-11-11 (金) 21:13
cubic9.comでは全てを場当たり的に修正しています
まず編集認証を次のような感じにしてます。*1<?php $auth_users = array( 'hoge' => '{SMD5}OzJo/boHwM4q5R+g7LCOx2xGMkFKRVEx', // SMD5 'hoge_passwd' ); $auth_method_type = 'pagename'; // By Page name $edit_auth = 1; $edit_auth_pages = array( '#^((?!^(SandBox)|(コメント/.+)$).)*$#' => 'hoge', ); ?>スキンは自前でテキトーに書いたもので、ツールバーは$_SERVER['PHP_AUTH_USER']で表示を切り替えています。
<?php if (isset($_SERVER['PHP_AUTH_USER']) && ($_SERVER['PHP_AUTH_USER'] == 'hoge')) { ?> ...ツールバー... <?php } ?>このままでは認証するまでツールバーが表示されないので、認証はブックマークに入れてある http://example.com/?cmd=edit&page=FrontPage をクリックして行ってます。
全体的にセキュリティは怪しげです。 - でぃあばぁ(管理者) at 2005-11-11 (金) 22:26
以前のような使い方をなさりたいのであれば、次のように別のPukiWiki(例ではwiki_b)を設置し、wikiやattachなどのデータディレクトリを共有するようにすればいいのではないでしょうか。
ディレクトリ 用途 作業 wiki_a 閲覧用 データディレクトリの変更, PKWK_READONLYを1にする, 偽装パッチを当てる wiki_b 編集用 データディレクトリの変更 data データ用 wiki_aのattach,backup,cache,counter,diff,trackback,wikiを移動 共有の方法については公式サイトに例があったと思います。恐らくpukiwiki.ini.phpのDirectory settings Iの部分を変更するだけでOKです。
- でぃあばぁ(管理者) at 2005-11-11 (金) 21:13
- はいろ at 2005-11-11 (金) 23:31
うぉーq(T▽Tq)このような勝手な質問にお答えいただきありがとうございます。大変参考になりました。どちらの方法をとるか迷いますが、これで無事パッチが導入できそうです。
- はいろ at 2005-11-13 (日) 16:47
たびたび恐れ入ります。上のほうのコメントにあるslash.phpなのですが、これは書かれている中身の他に何かrequireでファイルを読み込む必要でもあるのでしょうか?(^^;
- でぃあばぁ(管理者) at 2005-11-13 (日) 20:05
func.phpからinput_filterとanchor_replaceをコピーしてくれば動きます。ただし何のチェックもしていないので、一つ間違うと無限ループです
一応 RewriteOptions MaxRedirects=1 で避けていますが、正直全くお勧めできません。
- でぃあばぁ(管理者) at 2005-11-13 (日) 20:05
- はいろ at 2005-11-14 (月) 00:22
おかげさまで、なんとか動くようになりました(´▽`)ただ、slash.phpを有効にすると、どういうわけか普通にページを開いただけで認証ダイアログが出てしまいますorz(教えていただいた$edit_authを使う方法でこれまでうまくいっていたのですが)
- はいろ at 2005-11-14 (月) 00:51
どうやらpukiwikiをサブディレクトリに設置しているのが問題らしく、slash.phpのLocation: /をLocation: /pukiwiki/にした時点でこの現象がおきるようです。
- はいろ at 2005-11-14 (月) 00:51
- Logue at 2005-12-26 (月) 16:10
html偽装したまではよかったが、全部index.phpにリダイレクトされてしまう。もしもfoo.htmlが存在したときにそっちにアクセスするようにしたい場合はどうしたらいんでしょう?
- でぃあばぁ(管理者) at 2005-12-26 (月) 20:12
RewriteCond %{REQUEST_FILENAME} !-fを指定するとどうですか?
- でぃあばぁ(管理者) at 2005-12-26 (月) 20:12
- Logue at 2006-01-02 (月) 23:17
具体的に言うとGoogle Sitemapの認証対策です。PukiWikiでsitemapを作るプラグインはあるんですけど、認証を受けるときにいちいち、htaccessでそのときだけhtml偽装を解除するのもどうかなと思って。
- でぃあばぁ(管理者) at 2006-01-07 (土) 09:02
うぅ。なんだかちょっと分からないです。上記Apacheの設定とPukiWiki/改造/ページがないときは404を出力で解決したりしませんか?
- でぃあばぁ(管理者) at 2006-01-07 (土) 09:02
- machu at 2006-02-12 (日) 21:38
Apache1.3+PHP4.3.10+PukiWiki1.4.6で「静的コンテンツに偽装」をやってみたところ、日本語ページ名のときにページが表示されませんでした。Apache側がURLをデコードしているのが原因のようです。「RewriteRule ^(.+)\.html$ index.php?cmd=read&page=$1 [L]」と書くことで、回避できました。
- でぃあばぁ(管理者) at 2006-02-13 (月) 22:12
ご報告ありがとうございます。おっしゃる通り一部のページ名で不具合が出るようです。なお、このサイトでは扱っていませんが、PATH_INFOを使う場合はデコード処理が入らないため、この不具合は起こらないようです。
- でぃあばぁ(管理者) at 2006-02-13 (月) 22:12
- かがみ at 2008-06-25 (Wed) 07:33
ディレクトリ偽装パッチ (camo_dir_147.diff.2) を使わせて頂こうと試行錯誤中です.基本的にはうまく動いているのですが,編集時にプレビューをしようとすると「ページの内容は空です」と表示されてしまうという症状が出るようになりました.プレビューせずに更新すれば正常に書き換わります.当初は RewriteEngine を疑いましたが,RewriteEngine をオフにしても同様です.このような症状が出ているのは私のところだけでしょうか?
- かがみ at 2008-06-25 (Wed) 23:20
原因がわかりました.お騒がせしてすみません.何かの拍子に DATA_DIR に .txt という空っぽのファイルができてしまっており,これが plugin/edit.inc.php の中の plugin_edit_preview() でテンプレートとして読み込まれしまっていました.DATA_DIR/.txt がいつの間に作られたのかは謎ですが,導入当初 RewriteEngine をいろいろといじり回していたときに,何かおかしな状態にしてしまったのかもしれません.失礼致しました.
- かがみ at 2008-06-25 (Wed) 23:20
