PEAK XOOPS - /modules/ changerのテスト中 in englishin japanese

Archive | RSS |
Site News
Site News : /modules/ changerのテスト中
Poster : GIJOE on 2005-05-16 12:11:34 (44449 reads)

in englishin japanese
Simplified URL をいろいろ試しましたが、どうしても副作用を消しきれない、というのが正直なところです。

というわけで、もっとずっとお手軽な「modules を好きな文字列に変更する」てなHackを試してます。

パスの深さという、非常に面倒な問題は変わらないので、副作用もほとんどないのではないか、と見積もっています。しばらくこのサイトでテストしてみます。

insert 8 lines into top of mainfile.php


	// modules changer (insert this 8 lines)
	if( ! function_exists( 'modules_changer' ) ) {
		$_SERVER['REQUEST_URI'] = str_replace( '/md/' , '/modules/' , @$_SERVER['REQUEST_URI'] ) ;
		$_SERVER['HTTP_REFERER'] = str_replace( '/md/' , '/modules/' , @$_SERVER['HTTP_REFERER'] ) ;
		function modules_changer( $s ) {
			return str_replace( XOOPS_URL.'/modules/' , XOOPS_URL.'/md/' , $s ) ;
		}
		ob_start( 'modules_changer' ) ;
	}


insert 2 lines into XOOPS_ROOT_PATH/.htaccess

RewriteEngine on
RewriteRule ^md/(.*)$ modules/$1 [L]


2005/5/27追記:

深いリファラチェックを行ういくつかのモジュールのために、$_SERVER['HTTP_REFERER'] についても、書き換えを行うようにしました。

(Protector や WordPressME 0.3x がそれに該当します)

2007/2/18追記:
mainfile.phpの二度読みするモジュールへの対策を入れてみました

Printer friendly page Send this story to a friend

Comments list

tomotomo  Posted on 2008/1/17 20:00
Quote:
一番手っ取り早いのは、メインメニューなんて使うのをやめて、MultiMenuかなにかで、ja/?content_id= などと、なんらかの形でidを渡してあげる方法です。
そうですね。
リダイレクトの部分を書き換えるのは大変そうなので、MultiMenuで対応することにしました。
どうもありがとうございました。

MultiMenuで
-[dirname]?content_id=1
のように書くようにしました。
GIJOE  Posted on 2008/1/17 5:07
tomotomoさん、こんにちは。
Quote:

/modules/ changerハックを使ってmodules/をja/に変換したのですが、picoモジュールではmodules/の書き換えが上手く作動しないようです。
メインメニューのリンクURLはja/になっているけど、リンクをクリックするとmodules/のURLが表示されます。
おそらくは、リダイレクトですかね。
header('Location:')でのリダイレクトはさすがにob_filterじゃどうしようもないですね。

一番手っ取り早いのは、メインメニューなんて使うのをやめて、MultiMenuかなにかで、ja/?content_id= などと、なんらかの形でidを渡してあげる方法です。

pico側でも何か考えておきます。
tomotomo  Posted on 2008/1/16 18:01
すばらしいHackを紹介いただきありがとうございます。

「こんな現象があります」程度ですが、紹介します。
/modules/ changerハックを使ってmodules/をja/に変換したのですが、picoモジュールではmodules/の書き換えが上手く作動しないようです。
メインメニューのリンクURLはja/になっているけど、リンクをクリックするとmodules/のURLが表示されます。
ためしにアドレスバーにja/からのURLを記入するすると問題なく表示されます;;

ちなみに、何も記事を書いていないpico(インストールしたばっかりのもの)では問題なくja/が表示されます。(記事がないコンテンツは問題でしょ、というツッコミは無しで^^;)

幸い、picoにはwrapモード、re_writeモードがあるので、個別に設定すれば解決できそうですが、せっかくなので/modues/ changerハックだけで書き換えができないものでしょうか。
kumakichi  Posted on 2006/7/17 21:40
>GIJOEさん、gusagiさん
お返事ありがとうございます。
もうちょっとがんばってみようと思います。

うまく行ったらまたご報告させていただきます。
gusagi  Posted on 2006/7/17 15:15
「以前こんな現象がありました」という程度ですが、書き込み^^;
apacheでalias指定して、alias側のURLで動かしていた際に、たまに動作がおかしくなることがありました。
ひょっとしたら、環境によってはそういうことが起き得るのかも知れませんね(’’)
GIJOE  Posted on 2006/7/17 13:09
とりあえず、私が紹介しているHackで、正常にD3モジュールは動作してますよ。
altsys、wraps、bulletin 2.0 全部問題ありません。

「パスの深さが違う」、というのはSimplifiedURLsと同レベルでの無茶をしているので、このHackとはまったく別次元のものだと考えるのが相当でしょう。
kumakichi  Posted on 2006/7/16 2:56
こんにちわ、こちらの技術をXOOPS_TRUST_PATHが使われているwrapsモジュールとbulletinモジュールに試してみようと思ったのですがどうもうまく行きません。

ソースを見てみたのですがなかなか難しくて確信はもてないのですがもしかしてこのURLハックとXOOPS_TRUST_PATHを使うモジュールとの共存は難しいのでしょうか?

ちなみに実際には他の方が投稿されて紹介しているのぶのぶさんのパスの深さが違うものも含めた変換をやってみました。

http://www.kowa.org/modules/yybbs/viewbbs.php?bbs_id=4&serial=2164

時間のあるときにコメントいただければと思います、何卒よろしくお願いします。
dendeke  Posted on 2006/2/20 11:31
GIJOEさん、こんにちわ。

ログインも1度でOKに、CXも無事アクセスできるようになりました。まずはご報告まで。

追伸:
Quote:
それはXOOPSをしばらく使ってないからでは?
コメントフォームには元々引用ボタンありませんよ。

きゃ〜〜〜、お恥ずかしい。ここ、コメント欄でしたね
GIJOE  Posted on 2006/2/19 6:45
あ、どちらも現象が判りました。
とりあえずログインの方はフォーラムで継続しますが、CXについては、単に一般ユーザへの閲覧権限を与えていないだけでした。
そりゃ、userinfoに飛ばされますね。
(左上のブロックに、パーミッションがない、という旨の赤字のメッセージが出ていたはずです)
というわけで修正してます。
GIJOE  Posted on 2006/2/19 6:38
dendekeさん、こんにちは。
Quote:
※なぜかこのフォームに引用用のボタンが消失。以下は手入力で引用してます・・・
それはXOOPSをしばらく使ってないからでは?
コメントフォームには元々引用ボタンありませんよ。

Quote:
その前に、別のスレッドあたりでどなたかが書き込んでいるようですが、自分もWindows版FireFox(1.5.0.1)でこのサイトにログインするとき、2回やらないとダメでした
おかしいですねえ。
うちではどのブラウザを使ってもOKなんですけど。
ともあれ、そっちは本題のスレッドの方で。

Quote:
(1)このサイトにアクセスする
※ただし、上記のとおり2回やらないとログインできない。1回目は何事もなかったように、トップの画面がゲストのまま表示されるだけです。

(2)ページ上部の「CX」という箇所をクリックする。

上記のとおり、ただ普通に操作しているだけです。

ここで、クリック前に「CX」にポインタするとブラウザの下のほうにはtinydへのリンクが表示されますが、実際にアクセスすると「http://www.peak.ne.jp/xoops/userinfo.php?uid=自分のID番号」となってしまいます。
そのログイン失敗によって、変なキャッシュが生成されているようですね。
そこから再現しないと駄目な気がします。
(私の方では、いずれも再現しません)

ちなみに、ログイン前だとCXはどうなってますか?

Quote:
自分なりの考えで初心者の方をステップ毎に支援しようと頑張ってみたものの、あまりの抽象PMとかにちょっと挫折
抽象PMですかあ。あまりにも具体性を欠く質問じゃあ、答えようがないですもんねえ。
…って、中傷の誤変換やないけ!

などと、ノリ突っ込みしてみたり

Quote:
GIJOEさんの「PHPサイバーテロの技法」も発売日に購入させていただきました。
ご購入ありがとうございます。お役に立てば幸いです。

ではでは。
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!