CakePHP и Wordpress на Nginx PHP-FPM
Я пытаюсь настроить CakePHP и WordPress блог на одном сервере.
CakePHP здесь: http://site.com/
Блог Wordpress здесь: http://site.com/blog/
Что работает: все приложение CakePHP и собирается в / блог /.
Что не работает: Переход к / блог / постоянная ссылка /. Это дает CakePHP 404 страницы.
/ Blog / работает с или без "# Blog config" ниже. Как мне сделать / блог / постоянная ссылка / работа? Я привык работать с Apache.
редактирование: было предложено, чтобы мой вопрос был дубликатом этого поста, однако, если я использую это решение или мое решение (см. # Конфигурация блога) ниже, это дает мне страницу CakePHP 404. Это означает, что / blog / permalink / не попадает в index.php WordPress.
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;
}
}
1 ответ
Это похоже на твою проблему. Он переписывает все 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;
}