URL 재작성 방법
server { listening 8080; server_name www.xxx.com; root /Users/lch/work/www/ci; access_log /usr/local/var/log/access.log; error_log /usr/local/var/log/error.log; 위치 ~ ^/(img|images|script|js|css|upload)/ { root /Users/lch/work/www/ci } break; { if (!-e $request_filename) { # /admin 재작성 ^/(admin)$ /index.php?c=welcome&m=index&d=$1 break; # /admin/index 재작성 ^/(admin)/([ a-zA-Z_]+)$ /index.php?c=$2&m=index&d=$1 break; # /admin/account/login 재작성 ^/(admin+)/([a-zA-Z_]+)/ ([a-zA-Z_]+)$ /index.php?c=$2&m=$3&d=$1 break; ## 일반 URL 재작성 ^/([a-zA-Z_]+)/([a- zA-Z_]+)/?(.*)$ /index.php?c=$1&m=$2 마지막 } 루트 /Users/lch/work/www/ci fastcgi_pass 127.0.0.1:9001; ; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
특히 백그라운드 관련 컨트롤러를 저장하기 위해 application/controllers/에 새 폴더를 만들었기 때문에 위 구성을 설명하세요. 일반 경로보다 나은 경우 레이어가 하나 더 필요합니다(&d=admin에 해당). 여기에서 rewrite 방법의 단점을 볼 수 있습니다. admin과 같은 상황이 발생하면 해당 rewrite 규칙을 추가해야 합니다.
PATH_INFO 메소드
server { listening 8080; server_name www.xxx.com; root /Users/lch/work/kidulty/snap_www; access_log /usr/local/var/log/snap_access. 로그; error_log /usr/local/var/log/snap_error.log; 위치 ~ ^/(img|images|script|js|css|upload)/ { root /Users/lch/work/kidulty/snap_www } if (!-e $request_filename) { ^(.*)$ /index.php/$1 last; } 위치 ~ { set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+ ?.php)(/.+)$") { $real_script_name $1 설정; $path_info $2 설정; } root /Users/lch/work/kidulty/snap_www; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; include fastcgi_params } }
참고:
프로젝트의 URL이 http:// www.xxx.com/index.php/user/profile에는 다음 재작성이 필요하지 않습니다:
if (!-e $request_filename) { rewrite ^(.*)$ /index.php/$1 last; }
위 내용은 Nginx 구성 CodeIgniter 프로젝트(2) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!