フォーラムへの返信

6件の返信を表示中 - 61 - 66件目 (全66件中)
  • >tenpuraさん
    お返事遅くなってしまい、すみません。
    日本語文字列は「特集」とかですね。

    1. http://examle.jp/特集
    2. http://examle.jp/%E7%89%B9%E9%9B%86

    上記以外も、日本語URIのページがすべてアウトです。
    カテゴリ、投稿に日本語が含まれているのはオッケーでした。
    ただし、投稿のパーマリンク構造は
    /hoge/%post_name%.html
    となっているので、トップに日本語を持って来たらアウトかもしれません。

    【補足情報1】

    しかしながら、一部の固定ページでリライトに失敗しており、別の個別記事を表示してしまいます。

    と書きましたが、あれは単にページスラッグを英語に書き換えたために発生していたエラーでした。
    スラッグをもとの「特集をURLエンコードした文字列」に戻したところ、2.9.2のソースを2.7.1と入れ替える上記のハックで正常に動きました。
    バッド・ノウハウです。

    【補足情報2】
    「環境に依存せず発生する」と書きましたが、別のPCで同じことを試したら大丈夫でした。
    ApacheやPHPのバージョンに起因する問題かもしれません。
    適当なことは書けないので、きちんと調べてからお伝えします。

    コアファイルをいじったところ、状況に進展があったのでご報告です。

    再度、問題が発生した状況を整理します。

    1. WordPress2.7.1から2.9.2へアップグレード
    2. URLエンコードされた日本語がURLに含まれる固定ページが404エラーで表示されなくなった
    3. カテゴリーページ、タグページなどに日本語URLが含まれていても問題なく表示されるが、固定ページだけダメ

    いじったのは下記のファイルです。
    /wp-includes/rewrite.php
    このファイルにはWP_Rewriteというクラスが定義されていますが、これのinitメソッドで2.7.1と2.9.2の下記の相違がありました。
    2.7.1

    // Enable generic rules for pages if permalink structure doesn't begin with a wildcard.
    		$structure = ltrim($this->permalink_structure, '/');
    		if ( $this->using_index_permalinks() )
    			$structure = ltrim($this->permalink_structure, $this->index . '/');
    		if ( 0 === strpos($structure, '%postname%') ||
    			 0 === strpos($structure, '%category%') ||
    			 0 === strpos($structure, '%tag%') ||
    			 0 === strpos($structure, '%author%') )
    			 $this->use_verbose_page_rules = true;
    		else
    			$this->use_verbose_page_rules = false;

    2.9.2

    // Enable generic rules for pages if permalink structure doesn't begin with a wildcard.
    		if ( preg_match("/^[^%]*%(?:postname|category|tag|author)%/", $this->permalink_structure) )
    			 $this->use_verbose_page_rules = true;
    		else
    			$this->use_verbose_page_rules = false;

    [^%]がまずいんじゃないかな?と思ってこの部分を2.7.1に差し替えたところ、これまで表示されなかったURLエンコードされた日本語をURIに含む固定ページが表示されるようになりました。

    しかしながら、一部の固定ページでリライトに失敗しており、別の個別記事を表示してしまいます。

    もうちょっと検証してみますので、ピンと来た方がいらっしゃったら、教えてください。

    編集ページのページスラッグ欄と同じ文字列(URLエンコードされた日本語)を使っても駄目ということでしょうか?

    はい、そうです。
    2.9.2に上げてみましたが、ダメでした。
    取り急ぎご報告です。

    2.7.1から2.9.1にしたところ、同様の問題が発生しましたので、ご報告です。

    2.7.1では正常に動いていたページも404になります。
    ページ名だけがダメですね。
    カテゴリースラッグ、投稿タイトルなどが日本語でも問題ないようです。

    [NG] http://example.jp/ページ名(エンコード済)
    [NG] http://example.jp/parent-page-slug/ページ名(エンコード済)
    [OK] http://example.jp/category/カテゴリー名(エンコード済)
    [OK] http://example.jp/category/投稿名.html(エンコード済)

    「アップグレードによる固定ページ404エラー」はローカル・リモートともに再現されたので、環境の問題ではないような気がします。

    これまで日本語URLで運用してきてしまったので、真相究明に励みたいところ。
    続報があれば報告します。

    フォーラム: プラグイン
    返信が含まれるトピック: wp-tmkm-amazonの更新

    公開してからエラーに気づいたので、書いておきます。

    • 書籍の著者名がArrayと表示される
    • DVDの出版社名もArrayと表示される

    上記はPEARライブラリのXMLパーサをXML_Unserializerにしたために起きたためだと思います。
    XML_Unserializerは子ノードが単数か複数かで戻り値が違うので…

    対応が終わったらまた書き込みます。

    プラグイン利用させていただきました。
    これまでは本文・抜粋の検索ができませんでしたが、有効になりました。
    5.0への引越しはちょっと不安だったので、大変助かりました。

    【動作環境】
    WordPress2.6.3
    ※searchEverything4.7.8利用
    使用サーバ:チカッパ!
    DB:MySQL4.0
    DBエンコード:ujis

    これでPHP5になってくれたら、チカッパのままやっていけそうです! あとはcronサポート(ちょっと脱線しました)。

    今後のバージョンアップも期待しています。

6件の返信を表示中 - 61 - 66件目 (全66件中)