Điểm:0

Nginx: viết lại tệp từ thư mục gốc

lá cờ um

Tôi có máy chủ nginx chạy trên môi trường linux và nó đang xử lý các miền www.example1.comwww.example2.com. mỗi miền có sơ đồ trang web riêng, vì vậy tôi cần tải sơ đồ trang web chính xác cho từng miền vì nó nằm trong thư mục gốc, chẳng hạn:

www.example1.com/sitemap.xml thực sự được tải từ www.example1.com/sitemaps/1/sitemap.xml

Và:

www.example2.com/sitemap.xml thực sự được tải từ www.example2.com/sitemaps/2/sitemap.xml

Để đạt được điều này, tôi đã cố gắng gán một giá trị cho từng miền và viết lại nó dựa trên giá trị biến như sau:

trong nginx.conf:

bản đồ $http_host $domain {
    www.example1.com 1;
    www.example2.com 2;
}

Và trong sitemap.conf:

if($domain=1){
  viết lại sitemaps/1/sitemap(.*)$ /sitemap cuối cùng;
}
if($domain=2){
  viết lại sitemaps/2/sitemap(.*)$ /sitemap cuối cùng;
}

Nhưng vì một số lý do, cấu hình này đang trả về 404.

Có lời khuyên nào không?

lá cờ sv
`sitemap.conf` có thể được đơn giản hóa như `rewrite sitemaps/$domain/sitemap(.*)$ /sitemap last;`. Tuy nhiên, điều này không ngăn được lỗi 404. 404 có thể là do các lý do khác (ngoài các đoạn được chia sẻ trong OP). Vui lòng chia sẻ cấu hình đầy đủ để khắc phục sự cố.
Điểm:2
lá cờ gr

Tôi không thấy cấu hình đầy đủ của bạn và không biết bạn đưa nó vào như thế nào và ở đâu sitemap.conf tập tin, nhưng tôi muốn làm điều đó theo một cách hoàn toàn khác. Với hiện tại của bạn bản đồ khối nó sẽ trông giống như

vị trí = /sitemap.xml {
    # sử dụng biến '$domain' như một phần của đường dẫn đầy đủ đến tệp 'sitemap.xml'
    gốc /var/www/domain/sitemaps/$domain; # không có dấu gạch chéo ở đây!
}

hoặc thậm chí có được đường dẫn đầy đủ đến /sitemaps/N/ thư mục với bản đồ chỉ thị như

bản đồ $http_host $sitemap_path {
    www.example1.com /var/www/example1.com/sitemaps/1;
    www.example2.com /var/www/example1.com/sitemaps/2;
}

vị trí = /sitemap.xml {
    # sử dụng biến '$sitemap_path' làm đường dẫn đầy đủ đến tệp 'sitemap.xml'
    gốc $sitemap_path; # không có dấu gạch chéo ở đây!
}

Nếu bạn vẫn muốn sử dụng viết lại cho nhiệm vụ này, bạn đang sử dụng nó không chính xác. Bạn có thể thử cái này:

nếu ($miền=1) {
    viết lại ^/sitemap\.xml$ /sitemaps/1/sitemap.xml cuối cùng;
}
nếu ($miền=2) {
    viết lại ^/sitemap\.xml$ /sitemaps/2/sitemap.xml lần cuối;
}

hoặc thậm chí tối ưu hóa hơn:

nếu ($miền) {
    viết lại ^/sitemap\.xml$ /sitemaps/$domain/sitemap.xml lần cuối;
}
Eng7 avatar
lá cờ um
Cấu hình đầy đủ sẽ gây nhầm lẫn, đó là lý do tại sao tôi chỉ thêm phần cấu hình có liên quan.
Eng7 avatar
lá cờ um
Thay đổi thư mục gốc cho vị trí sitemap.xml đã hoạt động với tôi. Đối với phần viết lại, "cuối cùng" được sử dụng để làm gì?
Ivan Shatsky avatar
lá cờ gr
Bạn có thể coi đó là sao chép-dán từ cấu hình ban đầu của mình.Nói chung, cờ `cuối cùng` có nghĩa là toàn bộ quá trình xử lý URI sẽ diễn ra lại, nhưng lần này là giá trị `$uri` đã thay đổi.

Đă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.