KinoWiki.net

掲示板 > 5 > wiki内部のリンクが正常でない

掲示板/5/wiki内部のリンクが正常でない

帽子草 2005-09-08 13:25:08

wikiやphpについての知識が全く無いので要領を得ないかもしれませんが、ご容赦くださりませ。

wiki内部のページへ移動するリンクが、本来なら

ttp://XXXX/index.php?YYYYY

等となるべきところが、

ttp://XXXX/index.php/YYYYY

等となってしまいページが正常に表示されません。文字コードの変換に問題があるのかもと思いましたが、

どのファイルのどの部分を修正するべきかわかりません。

これだけでは情報に乏しいかもしれませんが、何かおわかりならお教えください。


ようか 2005-09-08 18:55:24

「index.php?xxx」ではなく「index.php/xxx」となっているのは正しい動作で、エキストラパス(PATH_INFO)と呼ばれるものを使っています*1

可能であればサーバの設定を見直してください。apacheではデフォルトでエキストラパスが使えますが、IISでは設定を変える必要があります。

「ホームディレクトリ」タブの「構成」「マッピング」でphpの設定を選び「編集」で表示される「アプリケーションの拡張子マッピングの追加/編集」で「ファイルの存在を確認する」チェックボックスをoffにしてください。それでエキストラパスが有効になります。

サーバの設定を変えられない場合は、hideable/func.inc.phpの「function getURL($page)」のところを次のように書き換えてください。

/**
 * URLを取得する。
 * 
 * @param	mixed	$page	ページ。Pageまたはstring。
 * @return	string	URL
 */
function getURL($page)
{
	if(is_string($page)){
		$page = Page::getinstance($page);
	}
	$encoded = rawurlencode($page->getpagename());
	return SCRIPTURL . '?' . $encoded;
}

これでエキストラパスではなく「index.php?xxx」のスタイルになります(ただ、バージョンアップのたびに書き換えないといけません。オプションで選択できるようにするつもりはありません)。


帽子草 2005-09-08 20:35:39

解決しました。有難う御座います。

エキストラパスについても、サーバ管理者に問い合わせてみます。


名前

*1: これにより、googleなどが「index.php/xxx」と「index.php/yyy」を別ページとみなしてくれます。「index.php?xxx」と「index.php?yyy」ではパラメータの違う同一ページindex.phpとみなされます