Nginx

Nginx PHP-FPM 上的 CakePHP 和 Wordpress

  • October 28, 2016

我正在嘗試在同一台伺服器上同時配置 CakePHP 和 wordpress 部落格。

CakePHP 在這裡:http ://site.com/

Wordpress 部落格在這裡:http ://site.com/blog/

**工作原理:**整個 CakePHP 應用程序並轉到 /blog/。

**什麼不起作用:**轉到/blog/permalink/。它提供了一個 CakePHP 404 頁面。

/blog/ 可以使用或不使用下面的“# Blog config”。我如何使 /blog/permalink/ 工作?我習慣於使用 Apache。

**編輯:**有人建議我的問題與這篇文章重複,但是如果我使用該解決方案或我的解決方案(註釋 #Blog config),它會給我一個 CakePHP 404 頁面。這意味著 /blog/permalink/ 不會命中 wordpress 的 index.php。

upstream backend {
   server unix:/var/www/apps/appname/tmp/php.sock;
}

server {
   listen 80 default;
   root    /var/www/apps/appname/public/app/webroot;
   index   index.php index.html index.htm;

   server_tokens off;

   access_log  /var/www/apps/appname/logs/access.log;
   error_log   /var/www/apps/appname/logs/error.log;

   client_max_body_size 20M;

   rewrite_log on;

   # Blog config
   location /blog/ {
       try_files $uri $uri/ /blog/index.php?$args;
   }

   # Not found this on disk? 
   # Feed to CakePHP for further processing!
   if (!-e $request_filename) {
       rewrite ^/(.+)$ /index.php last;
       break;
   }

   # Pass the PHP scripts to FastCGI server
   # listening on 127.0.0.1:9000
   location ~ \.php$ {
       fastcgi_pass   backend;
       fastcgi_index  index.php;
       fastcgi_intercept_errors on; # to support 404s for PHP files not found
       fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include        fastcgi_params;
   }

   # Static files.
   # Set expire headers, Turn off access log
   location ~* \favicon.ico$ {
       access_log off;
       expires 1d;
       add_header Cache-Control public;
   }
   location ~ ^/(img|cjs|ccss)/ {
       access_log off;
       expires 7d;
       add_header Cache-Control public;
   }

   location ~ ^/(php_status|php_ping)$ {
     fastcgi_pass backend;
     fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
     include fastcgi_params;
     allow 127.0.0.1;
     deny all;
   }

   location /nginx_status {
     stub_status on;
     access_log off;
     allow 127.0.0.1;
     deny all;
   }

   # Deny access to .htaccess files,
   # git & svn repositories, etc
   location ~ /(\.ht|\.git|\.svn) {
       deny  all;
   }
}

這看起來像你的問題。它重寫了所有的 URL,而不僅僅是那些發往 CakePHP 的。這是最常見的 nginx 錯誤配置之一。

   # Not found this on disk? 
   # Feed to CakePHP for further processing!
   if (!-e $request_filename) {
       rewrite ^/(.+)$ /index.php last;
       break;
   }

這應該被刪除並替換為try_files您的location /塊中的等效項(您似乎沒有,所以創建一個)。

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

引用自:https://serverfault.com/questions/511794