我嘗試了nginx並將我現有的apache配置移植到nginx。我設法成功地重新路由代碼字網址,但是我遇到了一個特定控制器的問題,其名稱與站點根目錄中的目錄一致。nginx codeigniter重寫:控制器名稱與目錄衝突
我設法讓我的笨URL的工作,因爲它在Apache中那樣,只是,我有一個特定的URL說http://localhost/hello
與在網站根hello
目錄一致。 Apache對此沒有任何問題。但是nginx路由到這個目錄而不是控制器。
我重路由結構如下
http://host_name/incoming_url => http://host_name/index.php/incoming_url
所有的笨文件都在網站根目錄。
我的nginx的配置(相關部分)
server {
listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
root /path/to/site/root;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location/{
# First attempt to serve request as file, then
# as directory, then fall back to index.html
index index.php index.html index.htm;
try_files $uri $uri/ /index.php/$request_uri;
#apache rewrite rule conversion
if (!-e $request_filename){
rewrite ^(.*)/?$ /index.php?/$1 last;
}
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location ~ \.php.*$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
我是新來的nginx的,我需要找出與控制器名稱此目錄衝突的幫助。我從網絡中的各種來源獲得了這種配置,並且我非常讚賞任何更好的書寫配置的方式。
嗨。感謝回覆。但我嘗試了所有上述建議,並刪除'$ url /'部分根本不起作用。給我一個拒絕訪問。另外我在服務器指令中有一個'root'。在位置指令中是否也需要它?並刪除if塊if(! - e $ request_filename)..'也導致'訪問被拒絕的消息'我是nginx的新手,配置主要來自各種來源。請指向正確的方向。 – palerdot
通過access denied你的意思是一個403禁止的錯誤? –
沒有。在整個頁面中只有一行訪問被拒絕。刪除'fastcgi_split_path_info ^(。+ \。php)(/.+)$;'如你所說的那樣工作,並且在配置文件中沒有任何作用。但刪除'if(!-e $ request_filename){^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }'部分讓事情變得不合時宜。 – palerdot