web-dev-qa-db-ja.com

サーバー移動:ホームをリードする全ページ

問題です。

どのURLを入力しても、すべてのページにサイトの静的フロントページが表示されます。既知のサイトURLはホームページをロードします(ただしURLは入力したままにします)。そして/I-know-you-do-not-exist-4343のような404パスもホームページをロードします(URLを維持します)。

私は問題なくWordPressの管理者にアクセスすることができます - それはただ気が狂っているサイトのフロントエンドです。

また、パーマリンクを完全に削除して?post=2を指定すれば、サイトは正常に動作します。サイトcss/js/imagesの読み込みに成功しています。

事実だけでお願いします:

  • Ubuntu 14.04
  • Apache 2.4.7
  • PHP 5.6.19-1
  • nginx 1.4.6(フロントエンド)
  • Wordpress 4.4.2
  • mod_rewriteが有効になっています(下記の設定ファイル)。
  • 権限と所有権はすべて設定されています。 WPは.htaccessファイルを書き換えることができます。

私は通常2つのサイトURLオプションをwp-configで動的に定義しますが、それらを削除することと、wp-configと直接データベースの両方に手動で入力することを試みました。

define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/wordpress');
define('WP_HOME',    'http://' . $_SERVER['SERVER_NAME']);

パーマリンクをフラッシュし、クッキーを壊し、そしてApacheを再起動したのは約800回でした。

すべてのプラグインを無効にしました。

ソース管理上の理由から、Wordpressはサブフォルダala Jaquithのスケルトン にあります。基本的に、

 /var/www/html/ 
 /var/www/html/app/ (wp-content)
 /var/www/html/media/ (wp-content/uploads) 
 /var/www/html/wordpress/

そして、これが私のconfファイルからのちょっとです:

    DocumentRoot /var/www/html
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory "/var/www/html">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

基本的なnginx-> Apacheは正常に動作しています。転送は8080とports.conf、そして私の仮想ホストsite.confファイルがそれを待ち受けています。つまり、<?php phpinfo(); ?>を静的なphpファイルに入れても、期待通りに動作します。

当初、私は無限ループ問題を抱えていて、それから私のサイトプラグインにこれ​​を追加しました:

remove_filter('template_redirect', 'redirect_canonical’);

これがnginx confです(基本的にinternetzが使うと言っている標準バージョン):

server {
   listen 80;
   root /var/www/html;
   index index.php index.html index.htm;

   server_name example.com;

   location / {
     try_files $uri $uri/ /index.php;
   }

   location ~ \.php$ {
     proxy_set_header X-Real-IP  $remote_addr;
     proxy_set_header X-Forwarded-For $remote_addr;
     proxy_set_header Host $Host;
     proxy_pass http://127.0.0.1:8080;
   }

   location ~ /\.ht {
      deny all;
   }
}

そしてこれが典型的なリクエストのレスポンスヘッダです:

HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 17 Mar 2016 02:13:24 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 5600
Connection: keep-alive
Link: <http://example.com/wp-json/>; rel="https://api.w.org/", <http://example.com/>; rel=shortlink
Vary: Accept-Encoding
Content-Encoding: gzip
1
Will

あなたのプロキシはすべてをindex.phpに書き換えています。つまり、バックエンドはオリジナルのURIを見ません。プロキシは次のように透過的にする必要があります。

server {
   listen 80;

   server_name example.com;

   location / {
     proxy_set_header X-Real-IP  $remote_addr;
     proxy_set_header X-Forwarded-For $remote_addr;
     proxy_set_header Host $Host;
     proxy_pass http://127.0.0.1:8080;
   }
}
1
Richard Smith