私のgitwebインストールはこれまで通り動作しますが、クエリ文字列を含む生成されたすべてのリンクが動作します。Gitweb URLがクエリ文字列でエスケープする
host/gitweb?p=somepath&a=summary
が何らかの形で誤っています。 最初に、アンパサンドはセミコロンに置き換えられます。 htmlを調べると、リンクは次のようになります
host/gitweb?p=somepath;a=summary
リンクをクリックすると、ブラウザは ';'をエスケープします。 「%部3b」に、そのサーバーに送信されたURLはgitweb.cgiがこれを解析しない
host/gitweb?p=somepath%3ba=summary
のように見え、404エラーページが表示されます。 '%3b'を ';'で置き換えると、または '&'、すべて正常に動作します。
これはどのようにサーバー側で修正できますか?
これまでのところ、私は ';'を生成する行を見つけようとしました。 URLには、行1457
$href .= "?" . join(';', @result) if scalar @result;
の代わりに ';' '&'によってブラウザに不正な形式のxhtmlが表示されます。それを '& amp;'に置き換えてください。ブラウザは再び ';'をエスケープします。再び破損したURLを生成します。
、私はgitweb.confファイルにオプション
$feature{'pathinfo'}{'default'} = [1];
を設定した場合の問題は、(私はリポジトリを閲覧することができます)一種の隠されているが、残念ながら、複数のリポジトリを含むフォルダを表示することができませんそれぞれのリンクがいくつかのクエリパラメータを使用するからです。
Re "*ブラウザが ';'をエスケープします。 〜 '%3b' * "、いいえ。それは合法ではないでしょう。 – ikegami
"*を ';'に置き換える'&'はブラウザに不正な形式のxhtmlを与えます。* "、あなたはXHTML注入エラーがあります。XHTMLに埋め込んだテキスト(URL)をエスケープするのを忘れた。 '& 'を' & ' – ikegami
に置き換える必要があります。 '&'によっても動作しません。なぜなら、 ';'リンクをクリックするとエスケープされています。 – quantenquatsch