同じサーバー上で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;
}
}
これはあなたの問題のようです。 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;
}