2012-12-22 31 views
8

Tôi đang di chuyển sang Nginx, từ Apache.Nginx: Chuyển hướng tất cả các yêu cầu không tồn tại tới index.php

Tôi hiện đang sử dụng giải pháp quản lý nội dung tùy chỉnh sử dụng SERVER ['request_uri'] để xử lý định tuyến.

Điều tôi đang cố gắng thực hiện là chuyển hướng tất cả các tệp không tồn tại & yêu cầu thư mục tới /index.php và không cập nhật uri của khách hàng. Tuy nhiên, khi một tập tin không tồn tại, tôi muốn trả lại thay vào đó.

Một url ví dụ sẽ là: localhost/content/trang/1 < - Nên cư $ _SERVER [ 'REQUEST_URI'] là/content/trang/1 Hoặc localhost/public/script/exists.js < - Nên được trả lại dưới dạng tệp thực.

Trả lời

9

Bạn cần thêm một khối location / hoặc cập nhật khối location / hiện tại trong tệp nginx vhost của mình.

này sẽ chuyển hướng tất cả yêu cầu đến index.php nếu các tập tin hoặc thư mục không được tìm thấy:

location/{ 
    try_files $uri $uri/ /index.php; 
} 

này đi bên trong chỉ thị máy chủ của bạn, để biết thêm thông tin chuyến thăm http://wiki.nginx.org/HttpCoreModule

Sau khi bạn chỉnh sửa tập tin vhost của bạn bạn cần phải khởi động lại nginx

Lưu ý: Chỉ thị try_files cho máy chủ bl ocks đã được thêm vào trong 0.7.44

+0

BTW, làm thế nào tôi có thể lấy tên tệp được chuyển hướng trong php? – starikovs

Các vấn đề liên quan