サポート » 使い方全般 » パーマリンク設定によってトップページ以外表示しない

  • 解決済 non888

    (@non888)


    さくらサーバーを使用しWordPressのサイトを運用しているのですが、パーマリンク設定「基本」以外だと固定ページへのアクセスが、トップページへリダイレクトしてしまう問題が起きており原因がわからず困っております。
    各情報は下記の通りです。

    WordPressバージョン:4.9.9
    パーマリンク設定:数字ベース
    phpバージョン:7.2
    WordPressアドレス:http://example.com/wp
    サイトアドレス:http://example.com
    ※トップページは「front-page.php」で作成

    【ためしたこと】
    ・パーマリンク設定を編集せず更新したら直るかと思ったのですが、ダメでした
    ・「数字ベース」ではなく、「基本」にすると固定ページの閲覧が可能。
    ・xamppを使用し、同じ条件で作成してみたところ、パーマリンク設定「数字ベース」で固定ページへのアクセスが可能。
    ・固定ページへはアクセスできてて、index.phpの内容が表示されているのかと編集してみたが、index.phpすら読み込みに行っていない。
    ・「.htaccess」内の記述に問題なし

    下記のコードは、パーマリンク設定「数字ベース」に設定していた物になります。

    ■ドメイン直下内の「.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
    `

    ■/wp内の「.htaccess」
    `ここに言語を入力
    # BEGIN SAKURA Internet Inc.
    <IfModule mod_deflate.c>
    SetOutputFilter DEFLATE
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
    </IfModule>
    <IfModule mod_expires.c>
    ExpiresActive On
    <FilesMatch “\.(css|js)$”>
    ExpiresDefault “access plus 1 week”
    </FilesMatch>
    <FilesMatch “\.(gif|jpe?g|png)$”>
    ExpiresDefault “access plus 1 month”
    </FilesMatch>
    </IfModule>
    # END SAKURA Internet Inc.

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

    # END WordPress
    `

    他になにかこれが原因かもなどというものがありましたら、お教えいただけますでしょうか。

    追加
    ==
    /wp内の「.htaccess」より「BEGIN SAKURA Internet Inc.」の部分を削除して試してみましたが、同じくトップページへ飛んでしまいます。
    ちなみに昨年末までは、固定ページへアクセスできるのを確認しており、本日たまたまこの問題を発見しました。

    昨年末の違いについて心当たりは特にない状態です。
    12/13にwp4.9.9へ自動バージョンアップしましたが、その後17日に固定ページへのアクセスを確認しております。
    「.htaccess」を編集する前にタイムスタンプとか、確認しとけばよかったのですが失念しておりました。
    ちなみに使用しているプラグインは下記の通りです。

    ・Advanced Custom Fields バージョン:5.7.6
    ・Contact Form 7 バージョン:5.0.3
    ・EWWW Image Optimizer バージョン:4.5.0
    ・Yoast SEO バージョン:8.3

    追記2
    ==
    wordpressのバージョンを一つ下げた4.9.8で同じサーバーに別のWordPressをインストールしてみて(ディレクトリ名はwp2)、パーマリンク設定を試したのですが、数字にすると「wp」へリダイレクトしてしまいます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • RICK

    (@rickaddison7634)

    ドメイン直下の位置にindex.php存在しますか?
    なければ、/wpディレクトリからコピーしてください。
    あと、ドメイン直下のindex.phpを下記のように編集することを忘れずに。

    編集前
    '/wp-blog-header.php'
    編集後
    '/wp/wp-blog-header.php'

    • この返信は4 ヶ月、 2 週間前に  RICK さんが編集しました。

    ご返答ありがとうございます。
    ドメイン直下にindex.phpは作成しており、記述についても「/wp/wp-blog-header.php」となっております。
    下記がドメイン直下の記述内容になります。

    <?php
    /**
     * Front to the WordPress application. This file doesn't do anything, but loads
     * wp-blog-header.php which does and tells WordPress to load the theme.
     *
     * @package WordPress
     */
    
    /**
     * Tells WordPress to load the WordPress theme and output it.
     *
     * @var bool
     */
    define('WP_USE_THEMES', true);
    
    /** Loads the WordPress Environment and Template */
    require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );

    さくらサーバー自体の問題なども考えられたりするのでしょうか?
    また、質問文には記載しておりませんでしたが。SSL対応のため下記の記述を各.htaccessとwp-config.phpに記述しております。

    ■ドメイン直下.htaccess(現在のパーマリンク設定は基本)

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.sakura\.ne\.jp$ [NC] 
    RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L]
    
    RewriteEngine On
    RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
    
    # 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

    ■「wp」ディレクトリ内.htaccess

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.sakura\.ne\.jp$ [NC] 
    RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L]
    
    RewriteEngine On
    RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
    
    # BEGIN SAKURA Internet Inc.
    <IfModule mod_deflate.c>
    SetOutputFilter DEFLATE
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
    </IfModule>
    <IfModule mod_expires.c>
    ExpiresActive On
    <FilesMatch “\.(css|js)$”>
    ExpiresDefault “access plus 1 week”
    </FilesMatch>
    <FilesMatch “\.(gif|jpe?g|png)$”>
    ExpiresDefault “access plus 1 month”
    </FilesMatch>
    </IfModule>
    # END SAKURA Internet Inc.
    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /wp/
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /wp/index.php [L]
    </IfModule>
    
    # END WordPress

    ■wp-config.phpに追記

    if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
        $_SERVER['HTTPS'] = 'on';
        $_ENV['HTTPS'] = 'on';
        $_SERVER['HTTP_HOST'] = 'example.com';
        $_SERVER['SERVER_NAME'] = 'example.com';
        $_ENV['HTTP_HOST'] = 'example.com';
        $_ENV['SERVER_NAME'] = 'example.com';
    }
    RICK

    (@rickaddison7634)

    「wp」ディレクトリ内.htaccess

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.sakura\.ne\.jp$ [NC] 
    RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L]
    
    RewriteEngine On
    RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
    

    これが強制リダイレクトを発生させている原因かもしれません。
    さくらサーバーの独自仕様のことはわかりませんが、
    wpディレクトリ内の.htaccessに上記記述は不要です。

    また、下記記述もwpディレクトリ内の.htaccessにはは一応不要なようです。
    ただ、こちらの影響度はほぼ皆無と言ってもいいかもしれません。

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

    P.S.
    私は別のサーバーを使っていますが、さくらサーバーのようなディレクトリ構造をしています。
    なので、一応参考までにドメインルートの.htaccessでの記述例を掲載しておきます。

    <IfModule mod_rewrite.c>
    	RewriteEngine On
    	RewriteCond %{HTTP_HOST} ^(example.sakura.jp)(:80)? [NC]
    	RewriteRule ^(.*) https://www.example.com/$1 [R=301,L]
    </IfModule>
    
    <IfModule mod_rewrite.c>
    	RewriteEngine On
    	RewriteCond %{HTTPS} off
    	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    </IfModule>
    
    # 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

    これを設定すればさくらサーバーの独自設定は不要になるかも(?)しれません。

    • この返信は4 ヶ月、 1 週前に  RICK さんが編集しました。
    • この返信は4 ヶ月、 1 週前に  RICK さんが編集しました。

    ご返答ありがとうございます。
    ドメイン直下内の「.htaccess」に記載しておりました下記コードが原因だったようです。
    ですが、サイト公開時から入れていたはずなので突然リダイレクトするようになったのが、まだ謎です。

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.sakura\.ne\.jp$ [NC] 
    RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L]
    
    RewriteEngine On
    RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • このトピックに返信するにはログインが必要です。