

wordpressのサーバーを移転した後に、移転先のサーバーでトップの画面は表示されるのですが、それ以外の全てのページは404エラーとなるようになってしまいました。

アクセスの少ない、深夜に作業していましたが、だいぶ時間が経っても解決できないため、質問させてもらいます。

サイトで紹介されている事は、ほとんど試していますがうまくいきません。

自分でも、解決できるよう調べながら作業しますが、対策についてご存じの方おりましたら、お力かしてもらえないでしょうか？

【エラーの状況】

  * サーバー移転後よりエラーが発生 
  * ネームサーバは切り替え済み
  * ドメインはSSL化で使用 
  * トップの画面は問題なく表示される（文字化け、レイアウトの崩れ無し）  
追記）新規の投稿はでき、一覧画面に表示されるが、それをクリックすると404エラーとなる

  * 現在のパーマリンクの設定は、投稿名（<https://sample.com/sample-post/>）としており、エラーがでるが、基本（<https://sample.com/?p=123>）に変更すると、404エラーなく表示される

【これまでに行った対応】

  * パーマリンクの設定の変更の保存
  * .htaccessの内容の確認
  * .htaccessの権限の変更 644 => 646  
[WordPressの引っ越し（移行）で404エラーが発生する場合の対処法](https://t-tel.net/wordpress/071/)  
[パーマリンク設定エラー「.htaccessを更新する必要があります。」の対処法](http://rigelstep.com/htaccess-1568)

  * httpd.confコードの確認

[【WordPress】.htaccessもapacheの設定もバッチリなハズなのに意図しないページが404になってお手上げ状態の時](https://qiita.com/nnmr/items/ac7599b356f9bcb511cc)  
httpd.confの一部コード

[code]

    <Directory />
        AllowOverride All
        Require all granted
    </Directory>
    
[/code]

  * httpd.confへのコードの追加

「Let’s Encrypt」を使ってSSLの再設定をする際に以下のエラーが発生しました。

[code]

    Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.
    
[/code]

そのため、/etc/httpd/conf/httpd.confに以下の内容を追記しています。  
[SSL証明書を発行するときに出たエラーの対処法](https://hacknote.jp/archives/48748/)

[code]

    NameVirtualHost *:80
    
    <VirtualHost *:80>
    ServerAdmin root@hogehoge
    DocumentRoot /var/www/html
    ServerName hogehoge
    </VirtualHost>
    
[/code]

このコードを追加してhttpsの表示ができるようになりました。  
その後、色々設定等を行ってから、/etc/httpd/conf/httpd.confを再度見てみると

[code]

    NameVirtualHost *:80
    
        <VirtualHost *:80>
        ServerAdmin root@hogehoge
        DocumentRoot /var/www/html
        ServerName hogehoge
        RewriteEngine on
        RewriteCond %{SERVER_NAME} =hogehoge
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
        </VirtualHost>
        Include /etc/httpd/conf/httpd-le-ssl.conf
    
[/code]

というように、自分では追加していないコードが追加されていました。

【.htaccessのコード】

[code]

    # 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>
    
    # BEGIN ブラウザキャッシュ
    <IfModule mod_headers.c>
      <ifModule mod_expires.c>
        ExpiresActive On
    
        # キャッシュ初期化
        ExpiresDefault "access plus 1 month"
    
        # CSS
        ExpiresByType text/css                              "access plus 1 year"
    
        # RSS
        ExpiresByType application/atom+xml                  "access plus 1 hour"
        ExpiresByType application/rdf+xml                   "access plus 1 hour"
        ExpiresByType application/rss+xml                   "access plus 1 hour"
    
        # データはキャッシュさせない
        ExpiresByType application/json                      "access plus 0 seconds"
        ExpiresByType application/ld+json                   "access plus 0 seconds"
        ExpiresByType application/schema+json               "access plus 0 seconds"
        ExpiresByType application/vnd.geo+json              "access plus 0 seconds"
        ExpiresByType application/xml                       "access plus 0 seconds"
        ExpiresByType text/xml                              "access plus 0 seconds"
    
        # Favicon
        ExpiresByType image/vnd.microsoft.icon              "access plus 1 week"
        ExpiresByType image/x-icon                          "access plus 1 week"
    
        # HTML
        ExpiresByType text/html                             "access plus 0 seconds"
    
        # JavaScript
        ExpiresByType application/javascript                "access plus 1 month"
        ExpiresByType application/x-javascript              "access plus 1 month"
        ExpiresByType text/javascript                       "access plus 1 month"
        ExpiresByType text/js                               "access plus 1 month"
    
        # マニフェスト
        ExpiresByType application/manifest+json             "access plus 1 week"
        ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
        ExpiresByType text/cache-manifest                   "access plus 0 seconds"
    
        # 画像や動画
        ExpiresByType audio/ogg                             "access plus 1 month"
        ExpiresByType image/bmp                             "access plus 1 month"
        ExpiresByType image/gif                             "access plus 1 month"
        ExpiresByType image/jpg                             "access plus 1 month"
        ExpiresByType image/jpeg                            "access plus 1 month"
        ExpiresByType image/png                             "access plus 1 month"
        ExpiresByType image/svg+xml                         "access plus 1 month"
        ExpiresByType image/webp                            "access plus 1 month"
        ExpiresByType video/mp4                             "access plus 1 month"
        ExpiresByType video/ogg                             "access plus 1 month"
        ExpiresByType video/webm                            "access plus 1 month"
    
        # Webフォント
        # Embedded OpenType (EOT)
        ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
        ExpiresByType font/eot                              "access plus 1 month"
    
        # OpenType
        ExpiresByType font/opentype                         "access plus 1 month"
    
        # TrueType
        ExpiresByType application/x-font-ttf                "access plus 1 month"
    
        # Web Open Font Format (WOFF) 1.0
        ExpiresByType application/font-woff                 "access plus 1 month"
        ExpiresByType application/x-font-woff               "access plus 1 month"
        ExpiresByType font/woff                             "access plus 1 month"
    
        # Web Open Font Format (WOFF) 2.0
        ExpiresByType application/font-woff2                "access plus 1 month"
    
        # Other
        ExpiresByType text/x-cross-domain-policy            "access plus 1 week"
    
      </IfModule>
    </IfModule>
    # END ブラウザキャッシュ
    
    # BEGIN Gzip圧縮
    <IfModule mod_deflate.c>
      SetOutputFilter DEFLATE
    
      # Mozilla4系などの古いブラウザで無効、しかしMSIEは除外
      BrowserMatch ^Mozilla/4 gzip-only-text/html
      BrowserMatch ^Mozilla/4\.0[678] no-gzip
      BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
    
      # gifやjpg、pngなど圧縮済みのコンテンツは再圧縮しない
      SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
      SetEnvIfNoCase Request_URI _\.utxt$ no-gzip
      #DeflateCompressionLevel 4
    
      # 有効な圧縮
      AddOutputFilterByType DEFLATE text/plain
      AddOutputFilterByType DEFLATE text/html
      AddOutputFilterByType DEFLATE text/xml
      AddOutputFilterByType DEFLATE text/css
      AddOutputFilterByType DEFLATE text/javascript
      AddOutputFilterByType DEFLATE application/xhtml+xml
      AddOutputFilterByType DEFLATE application/xml
      AddOutputFilterByType DEFLATE application/rss+xml
      AddOutputFilterByType DEFLATE application/atom_xml
      AddOutputFilterByType DEFLATE application/javascript
      AddOutputFilterByType DEFLATE application/x-javascript
      AddOutputFilterByType DEFLATE application/x-httpd-php
      AddOutputFilterByType DEFLATE application/x-font
      AddOutputFilterByType DEFLATE application/x-font-opentype
      AddOutputFilterByType DEFLATE application/x-font-otf
      AddOutputFilterByType DEFLATE application/x-font-truetype
      AddOutputFilterByType DEFLATE application/x-font-ttf
    </IfModule>
    # END Gzip圧縮
    
    # END WordPress
    
[/code]

サーバー環境  
CentOS (7 x86_64)  
Apache (2.4.6 CentOS)  
PHP (7.1.33)  
wordpress(5.2.5)


CC BY-SA 4.0
2020-03-14T22:23:17.223
63843
2020-03-15T01:36:09.877
2020-03-15T01:31:37.287
36988
36988
question
php wordpress
wordpressでトップ画面以外が全て404エラーとなる


移転前に設定していたパーマリンク設定で、表示されるようになりました。  
原因はhttpd.confのコードに不備があった事です。

質問欄の中では、ルートディレクトリの箇所のみ、オーバーライドを許可していましたが、それ以外のディレクトリも同様に許可する事が必要でした。

表示自体はされるようになりましたが、プラグインの更新時等に、ホストへの接続許可が出ない等、他のエラーがありますが、上の方法で今回の質問の404エラーは解決できました。


CC BY-SA 4.0
2020-03-15T01:36:09.877
63850
2020-03-15T01:36:09.877
36988
63843
answer