Php
cakephp & nginx 配置/重寫規則
嗨,有人請幫幫我,我也在 stackoverflow 上問過這個問題,但沒有得到太多回應,並且正在爭論它是程式還是伺服器相關。
我正在嘗試在使用 Fact CGI 執行 Nginx 的 Centos 伺服器上設置 cakephp 環境。我已經在伺服器上執行了一個 wordpress 站點和一個 phpmyadmin 站點,所以我正確配置了 PHP。
我的問題是我無法在我的虛擬主機中正確設置重寫規則,以便蛋糕正確呈現頁面,即樣式等。我已經盡可能多地在Google上搜尋,下面列出的網站的主要共識是我需要製定以下重寫規則
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 一起工作。(我做了什麼讓它工作,添加到配置集合中)
server { listen 80; server_name _; root /var/www/webapplication/app/webroot; if (-f $request_filename) { break; } if (!-f $request_filename) { rewrite ^/(.+)$ /index.php?url=$1 last; break; } location /favicon.ico { empty_gif; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include /usr/nginx/conf/fastcgi_params; fastcgi_param SCRIPT_FILENAME /var/www/webapplication/app/webroot/index.php; # $fastcgi_script_name; } }