web-dev-qa-db-ja.com

CakePHPとWordpress on Nginx PHP-FPM

同じサーバー上でCakePHPとwordpressブログの両方を構成しようとしています。

CakePHPはこちら: http://site.com/

Wordpressのブログはこちら: http://site.com/blog/

機能:CakePHPアプリ全体と/ blog /に移動します。

機能しないもの:/ blog/permalink /に移動します。 CakePHP404ページが表示されます。

/ blog /は、以下の「#Blogconfig」の有無にかかわらず機能します。/blog/permalink /を機能させるにはどうすればよいですか?私はApacheでの作業に慣れています。

編集:私の質問は この投稿 の複製であることが示唆されましたが、そのソリューションまたは私のソリューションを使用する場合(コメント#Blog config)その下にCakePHP404ページが表示されます。これは、/ 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;
    }
}
2
iDev247

これはあなたの問題のようです。 CakePHP宛てのURLだけでなく、すべてのURLを書き換えます。これは 最も一般的なnginxの設定ミス の1つです。

    # 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;
    }
1
Michael Hampton