パーマリンク設定がデフォルト以外だと2ページ目以降が見つからない

Simplicityの特徴 › フォーラム › 不具合報告 › パーマリンク設定がデフォルト以外だと2ページ目以降が見つからない

  • このトピックには3件の返信、2人の参加者があり、最後にHidekichiにより11年、 2ヶ月前に更新されました。
3件の返信スレッドを表示中
  • 投稿者
    投稿
    • #30291
      u
      ゲスト

      こんにちは

      Simplicity1.8.1バージョン: 1.8.1 20150731
      使い始めたのですが、パーマリンク設定で

      デフォルト  http://www.example.jp/wordpress/?p=123

      なら問題ないのですが、

      日付と投稿名 http://www.example.jp/wordpress/index.php/2015/08/02/sample-post/

      を選択すると問題がありました。それは、[日付と投稿名]を選択した場合、

      例えば、トップページを

        http://www.example.jp/wordpress/

      とすると正しく表示されます。
      2ページに移動するために [1][2][3] と表示されている[2]をクリックすると

        http://www.example.jp/wordpress/page/2/

      に飛ぶのですが、

        サーバー エラー 404 – ファイルまたはディレクトリが見つかりません。

      となります。[3]やそれ以降でも同じです。

      一方、特定のカテゴリー(cat1)で表示して、

        http://www.example.jp/wordpress/index.php/category/cat1/

      2ページに移動するために [1][2][3] と表示されている[2]をクリックすると

        http://www.example.jp/wordpress/index.php/category/cat1/page/2/

      が正しく表示されます。全く問題有りません。

      パーマリンク設定はデフォルトにしておくのが良いですか?

    • #30320
      アバター画像わいひら
      キーマスター

      おそらくこちらと同様の現象ではないかと思います。
      以下を参照してみてください。
      インデックスリストに表示される次のページへのリンク先が404エラーになる

      一応、テーマ側の不具合ではないと思います。

    • #30330
      u
      ゲスト

      わいひらさん
      さっそく試してみましたが、やはりデフォルトでは正常ですが、それ以外だと2ページ目以降で404になりました。
      わいひらさんの添付画像と同じように
       投稿名
       カスタム構造
      のどっちらかを選択しても404でした。
      WordPress初めて1週間くらいなので、わたしのやり方がおかしいのかもしれませんので
      取りあえずデフォルト設定でやって様子を見ます。
      ありがとうございました。

    • #30343
      Hidekichi
      ゲスト

      現在、自分のローカルサーバーはnginxでして、apacheを停止しているので確かめられないんですけれども、htaccess等に書き込みができない状態じゃないかなぁとも思ったりもします。

      かといって本番サーバーでパーマリンクを変えてしまうと、それなりにややこしいことになるので試すわけにも行かずなんです。なので昔の記憶を頼りに書くわけなんですけれども、確かにページネーションの404ってのはWordpressが昔から持ってる問題点でもあります。検索してもたくさんのエラー回避策が出てくるはずです。

      例えば、サイトアドレス/item/page/2とあった場合、pageが個別ページと解釈されたりすることもあるので、そんなページはねぇよ、404返しとこうって感じになったりするので、解決する方法の1つに親カテゴリーのスラッグを複数形にして(itemsなど)子カテゴリーと分別すると言う方法で直る場合もありますが、必ずしも直るわけでもありません。

      mod_rewriteが正しく機能していれば、動作する場合もあります。
      Apacheのmod_rewriteモジュールの使い方を徹底的に解説なんかが詳しく書かれていますけれども、mod_rewriteはアドレスの書き換えやリダイレクトを制御するapacheのモジュールです。

      うちのようにnginxだと、設定を色々と変えなければなりませんが、多くのサーバーはapacheで動いてると思いますし、たいていはこのモジュールも搭載されていると思います。ただ、レンタルサーバーの中にはhtaccessを許可していないサーバーもあるので、そういった場合、最初に作ったアドレスが、つまりはデータベースに登録されていると言うか、ファイルとして存在しているかどうかを調べて無い場合は404を返すと言う事態もあると思うんです。
      これは例えば サイトアドレス/?page=2が、サイトアドレス/page/2になった場合に、?pageはクエリですが、/page/は本来の意味合いとしてディレクトリになるので、そんなディレクトリはねぇよ、はい404って感じですね。

      そこで、htaccessに、rewriteルール等が記載されているか、あるいは更新されているかを確認されるのが良いのではないかなぁと思ったりも。
      htaccessは、.htacceessと言うファイルで、ドットから始まるファイルです。これはそのままでは隠しファイル扱いなのでftpのソフト側で「.(ドット)ファイル」が見えるように設定して、ダウンロードしそのファイルの中身を確認する必要があります。
      中身はテキストデータなので、見えさえすれば有名ドコロのテキストエディターならたいてい編集すること等も可能です。

      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /wordpress/
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /wordpress/index.php [L]
      </IfModule>
      
      # END WordPress

      こういうのが書いてあるはずなんですけどね。またapacheの設定で利用できるサーバーは自動的に.htaccessが作られるはずなんですけれども・・・。

      これ簡単に説明すると、リクエストされたものがファイルかディレクトリかを調べて、ドキュメントのルートから/wordpress/index.phpを参照しますって感じです。[L]はラストのlで変更がない限りこれでキマリ☆って感じです。
      こんな感じでパーマリンクの構造が変化されたらそれに従ってルールを自動で書き変えてくれるのですが、そこが機能していないんじゃないかなぁとふと思ったわけです。

      wordpress上で、htaccessが存在しているにも関わらずもし書き込み権限がない場合は、画面上に「.htaccess を更新する必要があります。」なんてのが出てきたりするのでわかるんですが、ファイル自体がない場合は何も表示されなかったように思います。

      ちょっとややこしい部類の話ですが、ここらも一応確認を。

3件の返信スレッドを表示中
  • このトピックに返信するにはログインが必要です。
スポンサーリンク
アドセンス(大)
アドセンス(大)