Điểm:1

Nginx nhận/từ/index.php mà không có "chỉ mục thư mục bị cấm" ở nơi khác

lá cờ us

tôi cần / được hiển thị như /index.php.

Ngay bây giờ tôi có

chỉ số index.php;
nếu ( $request_uri = /index.php ) { return 301 /; }
vị trí / { try_files $uri $uri/ =404; }

Và mọi thứ hoạt động tốt nhưng có một số lỗi như

chỉ mục thư mục của "/home/.../public_html/tmp/" bị cấm

mà tôi muốn loại bỏ. Vấn đề ở đây là $uri/ Trong try_files $uri $uri/ =404;

https://stackoverflow.com/questions/19285355/nginx-403-error-directory-index-of-folder-is-forbidden/38046124#38046124

Ubuntu + Nginx: chỉ mục thư mục của "/var/www/app/my-app/" bị cấm

Nhưng nếu tôi thay đổi điều này thành try_files $uri =404; hoặc try_files $uri /index.html index.php =404; sau đó "/" ngừng hoạt động và hiển thị 404

Tại sao loại bỏ $uri/ ngăn hiển thị index.php nếu tôi có chỉ số index.php;?

Làm thế nào tôi có thể thiết lập nó / nên kiểm tra index.php và nếu không có index.php thì chỉ hiển thị 404 mà không đưa ra lỗi "bị cấm"?

Richard Smith avatar
lá cờ jp
Trang web của bạn có nhiều hơn một tệp `index.php` không?
lá cờ us
Có thể có một số nhưng tôi chỉ quan tâm đến root `/index.php`. Hiện tất cả đều hoạt động nhưng với `chỉ mục thư mục của "..." bị cấm` khi ai đó truy cập vào trang không có ở đây vì `$uri/`.
Điểm:2
lá cờ jp

Các $uri/ thuật ngữ trong một try_files tuyên bố có hai mục đích riêng biệt.

Nếu URI không kết thúc bằng một /, nhưng tham chiếu đến một thư mục, Nginx sẽ tạo chuyển hướng 301 để nối thêm một /.

Nếu URI kết thúc bằng một / và tham chiếu đến một thư mục, chức năng Chỉ mục sẽ được gọi, điều này có thể dẫn đến chuyển hướng nội bộ đến tệp chỉ mục hoặc phản hồi 403 nếu không tìm thấy tệp chỉ mục.

Một giải pháp để chặn phản hồi 403 mà không ảnh hưởng đến quá nhiều thứ khác là xử lý các URI kết thúc bằng / khác nhau.

Ví dụ:

vị trí ~ /$ { 
    nếu (-f ${request_filename}index.php) {
        viết lại ^(.*)/$ $1/index.php cuối cùng;
    }
    trả lại 404;
}

Ở trên sẽ kiểm tra sự tồn tại của index.php trong thư mục và trả về 404 nếu nó không tồn tại.

Điểm:0
lá cờ us

Cách tiếp cận sau đây có thể hoạt động:

vị trí = /index.php {
    trả lại 301/;
}

địa điểm / {
    try_files $uri $uri/ /index.php =404;
}

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.