web-dev-qa-db-ja.com

Wordpress、Apache、およびNginx:パーマリンクとキャッシュ

サーバーがあり、Ubuntu 14.04.1Apacheポート8008およびnginxApacheのプロキシとしてのポート80で。 Wordpressに基づいてWebサイトを実行します。

私はWordpressのプラグインWP Super Cacheを次の設定で使用します:

enter image description here

また、Permalinksを次のように使用します。

enter image description here

ポート80Apacheしかなかった場合(nginxは当時インストールされていませんでした)、すべて正常に動作していました。

しかし、今(Apache8008nginx80)問題は:example.comのようなタイトルページのみをロードできるexample.com/2015/05/16/somepostなどの他のリンクは読み込まれず、タイトルページexample.comに戻りません。

以下はnginxWebサイトの構成(/etc/nginx/sites-enabled/mysite)です。

 server {
 listen 80; 
 server_name example.com; 
 root /var/www;
 index index.php; 
 
 gzip on; 
 gzip_disable "msie6"; 
 gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml + rss text/javascript application/javascript; 
 
 location〜/ \。 {
 deny all; 
} 
 
 location〜* /(?:uploads|files)/.*\.php$ {
 deny all; 
} 
 
 location〜* ^。+ \。(ogg | ogv | svg | svgz | eot | otf | woff | mp4 | ttf | rss | atom | jpg | jpeg | gif | png | ico | Zip | tgz | gz | rar | bz2 | doc | xls | exe | ppt | tar | mid | midi | wav | bmp | rtf)$ {
 access_log off; 
 log_not_found off; 
 expires max; 
} 
 
 location/{
 try_files $ uri $ uri//index.php$ args; 
} 
 
 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:8008;
} 
} 

そして、それは/var/www/.htaccessです:

#BEGIN WordPress 
 
 RewriteEngine On 
 RewriteBase /
RewriteRule ^ index\.php $-[L] 
 RewriteCond% {REQUEST_FILENAME}!-f 
 RewriteCond%{REQUEST_FILENAME}!-d 
 RewriteRule。 /index.php [L] 
 
#END WordPress 

何が間違っていますか?次のアドバイスを試しました。

しかし、それらのどれも助けなかった。

ちなみに、http://example.com/wp-admin/はいつでも動作するので、問題はキャッシュに関連していると思います(WP Super Cache)。

1
retif

a while研究と実験の後、私は解決策を見つけることができました:

  1. プラグインのインストール Permanlink Fix&Disable Canonical Redirects Pack ;
  2. 私の設定(上記で投稿したもの)のlocation /ブロックを次のように変更します。
 location/{
 try_files $ uri $ uri//index.php?q=$uri&$args;
}
0
retif