Phần mở rộng tập tin của Hide Hide .html sử dụng nginx viết lại


16

Tôi đang phục vụ một trang web tĩnh thông qua nginx và mục tiêu của tôi là thay thế URL trông giống như:

http://foo.com/bar.html

với

http://foo.com/bar

Chìa khóa không có dấu gạch chéo. Tôi hiện đang làm một cái gì đó tương tự bằng cách sử dụng các bí danh vị trí nhưng điều này thật tẻ nhạt vì nó yêu cầu một khối vị trí cho mỗi tệp và nó cũng xuất hiện một dấu gạch chéo vì nginx xem các bí danh như các thư mục:

    location / {
        root    /srv/www/foo/public_html;
        index   index.html;
    }

    location /bar1 {
        alias /srv/www/foo/public_html/;
        index bar1.html;
    }

    location /bar2 {
        alias /srv/www/foo/public_html/;
        index bar2.html;
    }

Và như thế. Tôi đã đọc qua các tài liệu viết lại và dường như tôi không thể tổng hợp được những gì được nói trong những gì tôi cần nó để làm. Tôi không đến từ nền tảng Apache; nginx là bước đột phá đầu tiên của tôi vào các máy chủ web vì vậy tôi chắc chắn rằng tôi đang thiếu một cái gì đó rõ ràng vì nền HTTP của tôi yếu. Cảm ơn trước cho bất kỳ sự giúp đỡ bạn có thể cung cấp.

Câu trả lời:


17

try_files nên là những gì bạn muốn.

Một cái gì đó như thế này:

try_files $uri.html $uri $uri/ =404;

1
Điều này đã hoạt động, với một ngoại lệ nhỏ là $ uri.html đã gây ra 500. Tôi đã phải sử dụng "$ {uri} .html".
Doug Stephen

4
Thay đổi nó thành try_files $uri.html $uri/ =404;SEO sẽ tốt hơn, vì bạn sẽ không có hai url foobar.com/barfoobar.com/bar.html trỏ đến cùng một tài nguyên.
Khaja Minhajuddin

5

Theo nhận xét từ @Khaja, câu trả lời tốt nhất là:

try_files $uri.html $uri/ =404;

Vì vậy, chỉ có một bản sao của tài nguyên được phục vụ (không có phần mở rộng .html). Bạn không muốn phân chia sức mạnh liên kết của mình cho nhiều URL phục vụ nội dung trùng lặp. Tìm tài liệu ở đây .


Tôi đã thử điều này. try_files $ uri.html $ uri / = 404; nó đã phá vỡ tải trang chủ mà không đề cử myurl / index cũng đã phá vỡ tải .css, .js, v.v.
aspiresGuru
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.