Bạn thực sự không cần bất kỳ quy tắc viết lại để làm cho Nginx và ZF2 để chơi đẹp với nhau. Đây là cấu hình Nginx rất đơn giản mà tôi sử dụng:
server {
listen *:80;
server_name DOMAIN;
# Character Set
charset utf-8;
# Logs
access_log /vhosts/DOMAIN/logs/access_log main;
error_log /vhosts/DOMAIN/logs/error_log;
# Directory Indexes
index index.php;
# Document Root
root /vhosts/DOMAIN/public;
# Location
location/{
try_files $uri $uri/ /index.php;
}
# Error Pages
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# PHP-FPM Support
location ~ \.php$ {
fastcgi_pass unix:/usr/local/etc/php-fpm/DOMAIN.sock;
include fastcgi.conf;
}
# Block access to .htaccess
location ~ \.htaccess {
deny all;
}
}
Tất nhiên thay đổi đường dẫn đến thiết lập hiện tại của bạn. Vì bạn không đề cập đến loại cài đặt PHP nào bạn đang sử dụng nên tôi không thể giúp bạn ở đó vì tôi hiện đang sử dụng PHP-FPM.
Sử dụng thiết lập rất đơn giản này tất cả các mô-đun của tôi đang hoạt động như mong đợi. Ví dụ tôi có thể truy cập http://example.com/some/url HOẶC http://example.com/index.php/some/url
Nginx cũng có một cấu hình đơn giản cho ZF http://wiki.nginx.org/Zend_Framework#Time_for_nginx
Sửa 1 - Thêm fastcgi_params cấu hình
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
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 $fastcgi_script_name;
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;
Wow! Nó thực sự giúp tôi truy cập các mô-đun khác! Cảm ơn nhiều! –
Bạn đã định cấu hình "fastcgi_param SCRIPT_FILENAME" của mình như thế nào? I có ab Vấn đề ở đó chỉ có tác phẩm này: "fastcgi_param SCRIPT_FILENAME $ document_root/index.php;" và bây giờ không thể định tuyến bất kỳ tuyến "miền/[bất kỳ]/index.php" nào? – Gizzmo
@Gizzmo theo yêu cầu, tôi đã cập nhật câu trả lời để cung cấp thông tin bạn đã yêu cầu. – Diemuzi