Nginx
Nginx PHP-FPM 上的 CakePHP 和 Wordpress
我正在嘗試在同一台伺服器上同時配置 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; }