問題です。
どのURLを入力しても、すべてのページにサイトの静的フロントページが表示されます。既知のサイトURLはホームページをロードします(ただしURLは入力したままにします)。そして/I-know-you-do-not-exist-4343
のような404パスもホームページをロードします(URLを維持します)。
私は問題なくWordPressの管理者にアクセスすることができます - それはただ気が狂っているサイトのフロントエンドです。
また、パーマリンクを完全に削除して?post=2
を指定すれば、サイトは正常に動作します。サイトcss/js/imagesの読み込みに成功しています。
事実だけでお願いします:
私は通常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
あなたのプロキシはすべてを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;
}
}