私は CakePHP を使用してサイトを作成する任務を負っていたので、最新の 2.2.3 をダウンロードし、ローカルの nginx 1.2.4 サーバーで構成する必要があります。
私はserver_block
働いていますが、何らかの理由でCSSをロードできません。テストのホームページでも、URL の書き換えが正しく機能していないことが報告されています。
多くの記事や質問を読んできましたが、問題を解決できるものはないようです。今まで参考にしてきた、
- nginx 1.0.8 + サブディレクトリで実行されている Cakephp アプリケーションの問題
- http://book.cakephp.org/2.0/en/installation/advanced-installation.html#pretty-urls-on-nginx
- http://www.littlehart.net/atthekeyboard/2007/09/14/configuring-cakephp-to-work-with-nginx/
- http://www.littlehart.net/atthekeyboard/2009/01/25/cakephp-nginx-configuration-update/
- http://kvz.io/blog/2010/02/24/cakephp-and-nginx/
私のcssリンクは次のようになります。
<link rel="stylesheet" type="text/css" href="/Users/david/Sites/example.com/css/cake.generic.css" />
Nginx が CSS の読み込みを許可しない理由を突き止める必要があります。これまでのところ、すべてのリンクに を追加していることしかわかりません$_SERVER['DOCUMENT_ROOT']
。これは明らかに、CSS が正しくリンクされないことを意味します。Cakephp がこの余分な情報を取得するのを止める人を見つける必要があります。リンクは次のように HtmlHelper に渡されますstring '/Users/david/Sites/example.com//Users/david/Sites/example.com/css/cake.generic.css' (length=86)
現在、私のnginx構成サーバーブロックは次のようになっています。
server {
server_name example.com;
root /Users/david/Sites/example.com/app/webroot/;
access_log /usr/local/var/log/nginx/example.com.access.log;
error_log /usr/local/var/log/nginx/example.com.error.log;
listen 80;
rewrite_log on;
# rewrite rules for cakephp
location / {
index index.php index.html;
# If the file exists as a static file serve it
# directly without running all
# the other rewite tests on it
if (-f $request_filename) {
break;
}
if (!-f $request_filename) {
rewrite ^(.+)$ /index.php?url=$1 last;
break;
}
}
location ~* \favicon.ico$ {
expires 6m;
}
location ~ ^/img/ {
expires 7d;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME example.com;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
FastCGIParams
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $request_filename;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;