ある認証サーバ経由でMovableTypeを利用すると再構築時にパスが下記のように変わってしまいエラーとなってしまうのですが

mod_rewrite等で正しく動作させる方法はないでしょうか(rewriteで可能な場合条件を教えてください)

http://hogehoge.com/A/cgi-bin/mt.cgi
↓(再構築時)
http://hogehoge.com/cgi-bin/mt.cgi

RewriteRule ^/cgi-bin/(.*)$ http://hogehoge/A/cgi-bin/$1 [L]
でrewriteするとループになってしまいます

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/12/21 15:15:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

ポイント60pt

.htaccessに記述しているのでしょうか?

その.htaccessはどのディレクトリに設置していますか?

もし「cgi-bin」ディレクトリに置いているのでしたら、「A」ディレクトリに移動してみてください。


ルート(Aディレクトリ)に設置する場合の.htaccessの記述

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^/A/
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?cgi-bin/(.*)$ http://hogehoge.com/A/cgi-bin/$1 [L]

※RewriteCond行は、記述しなくても大丈夫かもしれません。

必要な場合は、%{REQUEST_URI}か%{REQUEST_FILENAME}のどちらかを記述すれば大丈夫です。

(前者はリクエストURLにAディレクトリが含まれない場合に、後者はファイルやディレクトリが実在しない場合にルールを適用させる為の条件です。)

http://webtech.akijapan.com/htaccess/rewrite.phtml

http://memorva.jp/memo/linux/mod_rewrite.php


※フォローが必要な場合は、コメント欄を開けて置いてくださった方がやり取りしやすいです。

id:technote7

ありがとうございます

すみません、質問の指摘が一部抜けていました

認証サーバのせいでhttp://hogehoge.com/A/は固定で触ることができません

通常/A/ディレクトリが付加されるのですが、MTのonclick=window.openで指定箇所のみ

この/A/が外れてしまいエラーとなってしまうのです

回答の内容で色々と試してみたのですが、どうも認証サーバ自体を触らないと不可能みたいですね。。

2009/12/15 15:56:29
  • id:rouge_2008
    いくつか確認したいことがあります。

    ある認証サーバとはどちらのサービスなのでしょうか?
    MTはレンタルサーバーにご自分でインストールされたのですか?
    どちらのレンタルサーバを利用していますか?
    「http://hogehoge.com/A/」は固定で触ることができないという事ですが、mtフォルダは「http://hogehoge.com/A/cgi-bin/」ですか?
    「http://hogehoge.com/」も「http://hogehoge.com/A/」も、ご自分のレンタルサーバーのWEB領域でしょうか?
    それとも「http://hogehoge.com/A/」以下がご自分のWEB領域で、「A」はアカウント名なのでしょうか?
    WEBルートのパスやURL等、WEB領域の構造をもう少し詳しく教えてください。
  • id:rouge_2008
    よくよく考えたら、以下の記述は間違っていました。

    >もし「cgi-bin」ディレクトリに置いているのでしたら、「A」ディレクトリに移動してみてください。

    >ルート(Aディレクトリ)に設置する場合の.htaccessの記述


    次のように読み替えてください。m(__;)m

    もし「cgi-bin」ディレクトリと同階層に置いているのでしたら、ルート(「A」ディレクトリと同階層)に移動してみてください。

    ルート(Aディレクトリと同階層)に設置する場合の.htaccessの記述



    都合がつけば自分でも試してみたいので、もし宜しければ経由している認証サーバーを教えてください。
  • id:technote7
    >rouge_2008さま
    コメントが遅くなり申し訳ございません
    色々と回答いただきありがとうございます

    認証サーバはIBMのTivoli Access Managerになります
    /A/の仮想パスでサーバを判別し、通常のサーバルートパスがhttp://hogehoge.com/A/となってしまう為
    rewriteでどうにかならないか考慮していました(※例えば/B/だと別のサーバにつながります)
    この製品だとjavascriptのパス変換が不可能のため、MTだと一部window.locationなどjavascirptの相対パスでエラーが出てしまうのです

    rewriteでの対策だと本来のサーバの前に認証サーバにアクセスしてしまう為、どう考えても無理なんですよね
    rewriteする本来のサーバはあくまで正しく動いていて、認証サーバ側の問題なので…

    仕方ないのでMTの管理テンプレートを直に編集するしかないという結論になりました(javascriptパスのみ変える)
    あまり管理画面は弄りたくないのですが…

    深く考えずに質問してしまいすみませんでした

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません