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