嗨,有人请帮帮我,我也在 stackoverflow 上问过这个问题,但没有得到太多回应,并且正在争论它是编程还是服务器相关。
我正在尝试在使用 Fact CGI 运行 Nginx 的 Centos 服务器上设置 cakephp 环境。我已经在服务器上运行了一个 wordpress 站点和一个 phpmyadmin 站点,所以我正确配置了 PHP。
我的问题是我无法在我的虚拟主机中正确设置重写规则,以便蛋糕正确呈现页面,即样式等。我已经尽可能多地在谷歌上搜索,下面列出的网站的主要共识是我需要制定以下重写规则
location / {
root /var/www/sites/somedomain.com/current;
index index.php index.html;
# If the file exists as a static file serve it
# directly without running all
# the other rewrite tests on it
if (-f $request_filename) {
break;
}
if (!-f $request_filename) {
rewrite ^/(.+)$ /index.php?url=$1 last;
break;
}
}
http://blog.getintheloop.eu/2008/4/17/nginx-engine-x-rewrite-rules-for-cakephp
问题是这些重写假设你直接从 webroot 中运行 cake,这不是我想要做的。我对每个站点都有一个标准设置,即每个站点一个文件夹,其中包含以下文件夹日志、备份、私人和公共。公共场所 nginx 正在寻找其要服务的文件,但我私下安装了蛋糕,并在公共链接回 /private/cake/ 的符号链接
这是我的虚拟主机
server {
listen 80;
server_name app.domain.com;
access_log /home/public_html/app.domain.com/log/access.log;
error_log /home/public_html/app.domain.com/log/error.log;
#configure Cake app to run in a sub-directory
#Cake install is not in root, but elsewhere and configured
#in APP/webroot/index.php**
location /home/public_html/app.domain.com/private/cake {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.+)$ /home/public_html/app.domain.com/private/cake/$1 last;
break;
}
}
location /home/public_html/app.domain.com/private/cake/ {
index index.php;
if (!-e $request_filename) {
rewrite ^/(.+)$ /home/public_html/app.domain.com/public/index.php?url=$1 last;
break;
}
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/public_html/app.domain.com/private/cake$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
现在就像我说的那样,我可以看到 cake 的主要 index.php 并将其连接到我的数据库,但是这个页面没有样式,所以在我继续之前,我想正确配置它。我究竟做错了什么………。
谢谢海尔
对于一个非常简单/干净的方法,它与 cakephp 一起工作。(我做了什么让它工作,添加到配置集合中)
您的 php 文件被“~ .php$”位置捕获,它是唯一有效的文件。
这不起作用:
因为你提供系统路径,你应该提供 URI 路径。与重写规则相同。我看到您的配置类似于 apache :) 所以这可能是您要寻找的东西:
这假设您通过http://apps.server.com/cakephp访问 cakephp并拥有 nginx 0.7.x。
如果您有 nginx 0.6.x,请
error_page 404 = @cakephp
使用try_files
.祝你好运!