サポート » 使い方全般 » パーマリンクを設定すると404

  • 解決済 nagaco

    (@nagaco)


    パーマリンクを設定すると404になってしまいます。
    下記の通り確認しましたが、とにかく解決しないので書き込ませていただきました。。どうかご教授をよろしくお願いいたします。

    サーバ環境等
    ————
    さくらVPS
    CentOS Linux release 7.4.1708 (Core)
    Apache/2.4.6 (CentOS)
    PHP 7.2.2 (cli)
    mysqld Ver 5.7.21 for Linux on x86_64
    wordpress4.9.4
    ————

    現象
    ————
    ドキュメントルート /var/www/html のサーバで
    woredpressを /var/www/html/manager にインストールし、
    トップページに wordpressの固定ページ内に作った「トップページ」を表示するようにしてあります。

    パーマリンクの設定は何も変更しない状態(「基本」を選択中)の場合:
    投稿 > 新規作成したページが
    下書き保存 → 表示できる
    公開保存 → 表示できる

    パーマリンクの設定を変更する(「日付と投稿名」など)場合:
    投稿 > 新規作成したページが
    下書き保存 → 表示できる
    公開保存 → 表示できない(!)

    という状況で困り果てています・・・。固定ページも同じように表示できないです。

    確認したこと
    ————
    /etc/httpd/conf/httpd.conf で、AllowOverrideがAllになっているか
    → 下記の通り確認しました。
    `
    # grep AllowOverride httpd.conf
    AllowOverride All
    AllowOverride All
    # AllowOverride controls what directives may be placed in .htaccess files.
    AllowOverride All
    AllowOverride All
    AllowOverride All
    `

    mod_rewriteが動いているか
    → /var/www/html/.htaccess に下記のRewriteRuleを書いてGoogleにリダイレクトされました
    `
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteRule ^.*$ http://www.google.co.jp [L]
    </IfModule>
    `

    パーマリンクの更新を実行すると、.htaccessが書き換わるか
    → 実際に書き換わるのを確認しました。
       パーマリンクを「日付と投稿名」にした時、下記のようになります。
    `
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    # END WordPress
    `

    再インストールも3回ほどしましたが、状況は変わらずでした・・・。
    どうかよろしくお願いいたします。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック投稿者 nagaco

    (@nagaco)

    すみません、状況が変わりました。

    パーマリンク設定を
    共通設定:/topics/%post_id%
    カテゴリーベース:(空)
    タグベース:(空)
    にしたところ、

    固定ページの第一階層だけは http://xxx.xxx.xxx.xxx/about などで表示できるようになりました!
    でも、その下の階層 http://xxx.xxx.xxx.xxx/about/facility は表示されません。。。

    お知らせ一覧も、 http://xxx.xxx.xxx.xxx/topics で表示できるようになりました。
    けれど、お知らせ詳細 http://xxx.xxx.xxx.xxx/topics/100 は表示されません。。。

    何とかならないでしょうか・・・。

    @nagaco プラグイン・テーマなどの情報も記載して頂ければ何かしらの手がかりになるかもしれません。

    トピック投稿者 nagaco

    (@nagaco)

    @taro_unit さま、ありがとうございます!

    入れているプラグインは17個あります(全て有効)
    Adminimize
    Akismet Anti-Spam (アンチスパム)
    Category Order and Taxonomy Terms Order
    Contact Form 7
    Contact Form 7 add confirm
    Contact Form DB
    Flamingo
    Google Analytics Dashboard for WP (GADWP)
    Google XML Sitemaps
    Head Cleaner
    HTML Editor Syntax Highlighter
    Media File Manager
    Search Everything
    UpdraftPlus – Backup/Restore
    User Role Editor
    WP Mail SMTP
    WP Super Cache
    WP-SCSS

    テーマですが、
    Twenty Seventeen の子テーマ
    Twenty Seventeen Child を作り、適用しています。

    トピック投稿者 nagaco

    (@nagaco)

    あらためて、
    phpinfo(); を出力して確認しました。
    (何かのヒントになれば・・・と思い書いておきます)

    Loaded Modules の中に、mod_rewrite は含まれていました。
    url_rewriter.hosts は no value でした。
    url_rewriter.tags は form= でした。

    @nagaco とりあえず、プラグインを一度全部止めて、テーマをデフォルトテーマに戻し、参照(問題解決のためのチェックリスト)

    また、リライトルールの更新(パーマリンク設定のページで更新ボタンを押す)を行ってみてはいかがでしょう。

    その上で同様の問題が起きるかどうか確認すると、問題の切り分けが出来るかと思います。

    トピック投稿者 nagaco

    (@nagaco)

    ありがとうございます!
    ・プラグインを止めて
    ・テーマをデフォルトに
    ・キャッシュを削除(ブラウザキャッシュと、/wp-content/cache フォルダを削除)し
    ・ログアウトしても
    同様の問題が起きるので、wordpressの問題でなく
    サーバー側の設定ではないかと思っています。。。
    もう少し見てみます・・!

    トピック投稿者 nagaco

    (@nagaco)

    mod_rewriteをデバッグしています。
    このような感じです。。

    $ curl http://xxx.xxx.xxx.xxx/about


    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/about -> about
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] applying pattern ‘^index\\.php$’ to uri ‘about’
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/about -> about
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] applying pattern ‘.’ to uri ‘about’
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] RewriteCond: input=’/var/www/html/about’ pattern=’!-f’ => matched
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] RewriteCond: input=’/var/www/html/about’ pattern=’!-d’ => matched
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] rewrite ‘about’ -> ‘/index.php’
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] trying to replace prefix /var/www/html/ with /
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] internal redirect with /index.php [INTERNAL REDIRECT]
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e1efa8/initial/redir#1] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/index.php -> index.php
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e1efa8/initial/redir#1] [perdir /var/www/html/] applying pattern ‘^index\\.php$’ to uri ‘index.php’
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e1efa8/initial/redir#1] [perdir /var/www/html/] pass through /var/www/html/index.php

    $ curl http://xxx.xxx.xxx.xxx/about/facility
    `
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] add path info postfix: /var/www/html/about -> /var/www/html/about/facility
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/about/facility -> about/facility
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] applying pattern ‘^index\\.php$’ to uri ‘about/facility’
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] add path info postfix: /var/www/html/about -> /var/www/html/about/facility
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/about/facility -> about/facility
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] applying pattern ‘.’ to uri ‘about/facility’
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] RewriteCond: input=’/var/www/html/about’ pattern=’!-f’ => matched
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] RewriteCond: input=’/var/www/html/about’ pattern=’!-d’ => matched
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] rewrite ‘about/facility’ -> ‘/index.php’
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] trying to replace prefix /var/www/html/ with /
    mod_rewrite.c(470): [client ] xxx.xxx.xxx.xxx – – [xxx.xxx.xxx.xxx/sid#7fe568b70310][rid#7fe568e0dca0/initial] [perdir /var/www/html/] internal redirect with /index.php [INTERNAL REDIRECT]
    `

    トピック投稿者 nagaco

    (@nagaco)

    この前のレスが審査中になってしまったので、もう一度投稿します。。。
    rewriteログを見ています。

    うまく表示されている時(http://xxx.xxx.xxx.xxx/about)の rewriteログ:

    
    [0/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/about -> about
    [0/initial] [perdir /var/www/html/] applying pattern '^index\\.php$' to uri 'about'
    [0/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/about -> about
    [0/initial] [perdir /var/www/html/] applying pattern '^.*$' to uri 'about'
    [0/initial] [perdir /var/www/html/] RewriteCond: input='/var/www/html/about' pattern='!-f' => matched
    [0/initial] [perdir /var/www/html/] RewriteCond: input='/var/www/html/about' pattern='!-d' => matched
    [0/initial] [perdir /var/www/html/] rewrite 'about' -> '/index.php'
    [0/initial] [perdir /var/www/html/] trying to replace prefix /var/www/html/ with /
    [0/initial] [perdir /var/www/html/] internal redirect with /index.php [INTERNAL REDIRECT]
    [f8/initial/redir#1] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/index.php -> index.php
    [f8/initial/redir#1] [perdir /var/www/html/] applying pattern '^index\\.php$' to uri 'index.php'
    [f8/initial/redir#1] [perdir /var/www/html/] pass through /var/www/html/index.php
    

    ダメな時(http://xxx.xxx.xxx.xxx/about/facility)の rewriteログ:

    
    [0/initial] [perdir /var/www/html/] add path info postfix: /var/www/html/about -> /var/www/html/about/facility
    [0/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/about/facility -> about/facility
    [0/initial] [perdir /var/www/html/] applying pattern '^index\\.php$' to uri 'about/facility'
    [0/initial] [perdir /var/www/html/] add path info postfix: /var/www/html/about -> /var/www/html/about/facility
    [0/initial] [perdir /var/www/html/] strip per-dir prefix: /var/www/html/about/facility -> about/facility
    [0/initial] [perdir /var/www/html/] applying pattern '^.*$' to uri 'about/facility'
    [0/initial] [perdir /var/www/html/] RewriteCond: input='/var/www/html/about' pattern='!-f' => matched
    [0/initial] [perdir /var/www/html/] RewriteCond: input='/var/www/html/about' pattern='!-d' => matched
    [0/initial] [perdir /var/www/html/] rewrite 'about/facility' -> '/index.php'
    [0/initial] [perdir /var/www/html/] trying to replace prefix /var/www/html/ with /
    [0/initial] [perdir /var/www/html/] internal redirect with /index.php [INTERNAL REDIRECT]
    
    • この返信は6年、 1ヶ月前にnagacoが編集しました。
    トピック投稿者 nagaco

    (@nagaco)

    すみません、上記の件、httpd.conf の設定ミスでした。。。
    こんなことを書いていたのを見逃していました。。。
    `
    <If “-n %{PATH_INFO}”>
    Redirect 404 /
    </If>
    `
    本当に申し訳ないです。 @toro_unit さま、ありがとうございました!!!

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「パーマリンクを設定すると404」には新たに返信することはできません。