Nginx xóa chỉ mục html khỏi url

Nếu bạn có một trang web tĩnh được xây dựng bằng các tệp html đơn giản, url của bạn sẽ giống như https. //tên miền/trang của bạn. html. Cái này. Phần mở rộng html hữu ích cho các tệp khi nó ở trên máy tính cục bộ của bạn, nó giúp máy tính liên kết tệp với ứng dụng cụ thể, chẳng hạn như trình soạn thảo HTML của bạn. Nhưng trên một máy chủ web này. tiện ích mở rộng html không phục vụ mục đích nào. Nếu bạn đang sử dụng máy chủ web Nginx, bạn có thể xóa. html mở rộng từ các url trang web của bạn với đoạn mã sau

1

2

3

4

5

6

vị trí / {

    if ($request_uri ~ ^/(. * )\. html$) {

        trả lại 301 / $1;

    }

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

}

Gỡ bỏ. phần mở rộng php

Để loại bỏ. phần mở rộng php, bạn có thể sử dụng

1

2

3

4

5

6

vị trí / {

    if ($request_uri ~ ^/(. * )\. php$) {

        trả lại 301 / $1;

    }

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

}

Phương pháp 2

1

2

3

4

5

6

7

8

vị trí / {

try_files $uri $uri.html $uri / @extensionless-php;

chỉ mục chỉ mục. html chỉ mục. htm chỉ mục. php;

}

 

location @extensionless - php {

viết lại ^ (. * )$ $1. php cuối cùng;

}

Giữ lại đối số

Để giữ lại các đối số, hãy sử dụng

1

return 301 / $1$is_args$args;

Điều này sẽ chuyển hướng /mypage. html?name= đến /mypage?name=

Phục vụ tệp PHP với. phần mở rộng html

Xem Nginx

Làm thế nào tôi có thể loại bỏ tất cả. phần mở rộng html cũng như bất kỳ lần xuất hiện nào của chỉ mục. html từ một chuỗi url trong Nginx

rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
0 đến
rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
1
rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
2 đến
rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
3
rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
4 đến
rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
0
rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
1 đến
rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
2

CHỈNH SỬA. Đây là tập tin conf của tôi

người phục vụ {

    listen 80;

    server_name staging.mysite.com;
    root /var/www/staging.mysite.com;
    index  index.html index.htm;

    access_log /var/log/nginx/staging.mysite.com.log spiegle;


    #error_page 404         /404.html;
    #error_page 500 503     /500.html;


    rewrite ^(.*/)index\.html$ $1;
    rewrite ^(/.+)\.html$ $1;

    rewrite ^(.*/)index\.html$ $scheme://$host$1 permanent;
    rewrite ^(/.+)\.html$ $scheme://$host$1 permanent;

    location / {
            rewrite ^/about-us /about permanent                                                                                      
            rewrite ^/contact-us /contact permanent;  

            try_files  $uri.html  $uri/ /index.html;
    }

}

Câu trả lời hay nhất

Khi viết lại (chuyển URL bị tước sang hệ thống tệp/phụ trợ mà không thay đổi URL được hiển thị cho khách hàng)

rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;

Ngoài ra, bạn có thể thực hiện chuyển hướng 301 (khách hàng đưa ra yêu cầu mới)

rewrite ^(.*/)index\.html$ $scheme://$host$1 permanent;
rewrite ^(/.+)\.html$ $scheme://$host$1 permanent;

Giải pháp liên quan

Nginx – Trong Nginx, làm cách nào tôi có thể viết lại tất cả các yêu cầu http thành https trong khi vẫn duy trì tên miền phụ

Cách đúng trong các phiên bản mới của nginx

Hóa ra câu trả lời đầu tiên của tôi cho câu hỏi này là chính xác vào một thời điểm nhất định, nhưng nó lại trở thành một cạm bẫy khác - để cập nhật thông tin, vui lòng kiểm tra Cạm bẫy viết lại thuế

Tôi đã được nhiều người dùng SE sửa lỗi, vì vậy công lao thuộc về họ, nhưng quan trọng hơn, đây là mã chính xác

server {
       listen         80;
       server_name    my.domain.com;
       return         301 https://$server_name$request_uri;
}

server {
       listen         443 ssl;
       server_name    my.domain.com;
       # add Strict-Transport-Security to prevent man in the middle attacks
       add_header Strict-Transport-Security "max-age=31536000" always; 

       [....]
}

Nginx – Rắc rối với nginx và phục vụ từ nhiều thư mục trong cùng một miền

Chỉ thị

rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
3 là vấn đề ở đây. Trích dẫn từ tài liệu

Ghi chú. Hãy nhớ rằng thư mục gốc vẫn sẽ thêm thư mục vào yêu cầu để yêu cầu "/i/top. gif" sẽ không tìm trong "/spool/w3/top. gif" giống như có thể xảy ra trong cấu hình bí danh giống như Apache nơi chính vị trí khớp bị loại bỏ. Sử dụng chỉ thị bí danh để đạt được chức năng giống như Apache

Về cơ bản, chỉ sử dụng

rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
3 cho rễ thật. nếu nội dung ở
rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
5, hãy sử dụng root. Nếu nó sắp kết thúc trên một thư mục con, hãy sử dụng bí danh

Làm cách nào để xóa HTML khỏi URL nginx?

Cách xóa tiện ích mở rộng html trong Nginx .
Chỉnh sửa cấu hình của trang web bằng lệnh sau. # vi /etc/nginx/site-available/example. com. conf. Ghi chú. Đường dẫn của tệp cấu hình có thể khác trong máy chủ của bạn. .
Thêm mã sau. viết lại ^(/. *)\. .
Khởi động lại dịch vụ Nginx để áp dụng các thay đổi. # systemctl khởi động lại nginx