ძირითადი შინაარსიდან გადასვლა

Nginx გადაწერის წესი მაგალითები



სტატიის შინაარსი:

გადაათრიეთ url- სთან ერთად

ზოგიერთ CMS- ს შეუძლია გვერდებზე დაბლოკოს გვერდებზე დასასრული და მის გარეშე, თუ ძრავა არ გადამისამართება. მაგალითად, გვერდზე http://example.net/page და http://example.net/page/ სტუმარი თვალსაზრისით იქნება ერთი. მაგრამ საძიებო სისტემებისთვის ეს ორი განსხვავებული გვერდია და ყველაფერს სდებს ბრალს. ასე რომ, დუბლიკატის შინაარსი ცუდია.

გადაათრიეთ სლაშის გვერდზე, დაამატეთ შემდეგი ხაზი თქვენი საიტისთვის Nginx კონფიგურაციის ფაილში:


  გადაწერა ^ ([^]] * [^ /]) $ 1 / მუდმივი; 

ახლა გვერდზე გარეშე slash იქნება გადამისამართება 301th გადამისამართება გვერდზე ერთად slash. გაფართოების გვერდებზე (.html, .php და ა.შ.), ეს წესი არ იმოქმედებს. გარდა ამისა, ეს არის უნივერსალური და ისე, რომ ძრავა არ გადაჰყავს გადამისამართებების php- ის გამოყენებით, ეს წესი უნდა დაინიშნოს საუკეთესო საიტებზე, სადაც გამოიყენება ადამიანის წაკითხვადი მისამართები.

გადაწერა WordPress- ისთვის

WordPress დოკუმენტაციის აქვს ლამაზი მაგალითი გადაწერა წესები. მე მხოლოდ ხაზს უსვამს ყველაზე ძირითად რამეს, რომელიც აუცილებელია PHP- სთან ერთად.

  მდებარეობა / {
   try_files $ uri / / index.php$args;
  }
  მდებარეობა ~ \ .php $ {
   try_files $ uri = 404;
   fastcgi_pass unix: /run/php-www.sock;
   fastcgi_index index.php;
   მოიცავს fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
   fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i-fmail@example.com";
   fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /";
  } 

გადაწერა MODX- სთვის

ამ CMS- ზე საიტებისთვის გამოიყენე შემდეგი წესები:


  მდებარეობა / {
 try_files $ uri / urerite;
 }
 მდებარეობა @ რირიტი {
 გადაწერა ^ / (. *) $ / index.php?q=$1;
 }
 მდებარეობა ~ \ .php $ {
  try_files $ uri = 404;
  fastcgi_pass unix: /run/php-www.sock;
  fastcgi_index index.php;
  მოიცავს fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
  fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i-fmail@example.com";
  fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /";
 } 

301st გადამისამართება index.php, index.html ნებისმიერ საქაღალდეში

იგი ასევე ხდება, რომ CMS თავად არ გადამისამართება საწყისი ინდექსი ფაილების url მათ გარეშე. მაგალითად, საიტი ხელმისაწვდომი გახდება როგორც http://example.com/ და http://example.com/index.php. ეს წესი შეცდომას შეცვლის.

  თუ ($ request_uri ~ * ინდექსი. (php | html)) {
   გადაწერა ^ (. +) index.php $ სქემა: // $ host $ 1 მუდმივი;
 } 

ამ შემთხვევაში, მნიშვნელობა არ აქვს, თუ ინდექსის ფაილი root folder- ში ან subfolder- ში, გადამისამართება ყოველთვის მუშაობს.

სხვა

მე მაქვს ერთი მისი წაკითხვა გადაწყვიტა შეცვალოს სტრუქტურის კავშირები. მანამდე, ყველა შეტყობინება ხელმისაწვდომი იყო ბმულებით, როგორიცაა / postname.html, ახლა ისინი გადადიან სხვა მისამართზე: / fotojournal / postname /. თავდაპირველად, როგორც გამოსავალი, ვფიქრობდი გამოყენებით გადამისამართების მოდული WordPress, მაგრამ შემდეგ მინდოდა ცდილობენ განახორციელოს იგი nginx. და იდეა აღმოჩნდა. :)



მართალია, წესი აღმოჩნდა მარტივი, იმის გამო, რომ ყველა გვერდი /%postname%.html გადაეცეს ერთ კატეგორიას - ფოტოჟურნალისტს. ეს წესი ასე გამოიყურება:

  მდებარეობა ~ * \. (html) $ {
   try_files $ uri $ uri / @fotojournal;
 }

 საიდან @ fotojournal {
   გადაწერა * / (. * *). html / fotojournal / $ 1 / მუდმივი;
 }

დეტალურად განვიხილავთ. მოთხოვნის მომენტში მომხმარებლისგან, პირველ რიგში, ფაილი .html გაფართოება იძებნება საქაღალდეში საიტზე. ეს აუცილებელია რეალურ ცხოვრებაში html გვერდებზე საიტზე, რომელიც არ უნდა გადაეცეს ახალ კატეგორიას.

თუ მოთხოვნილი გვერდი ვერ მოიძებნა, მოთხოვნა გადამისამართება მეორე ადგილას - @ ფოტორნაირმა. აქ თქვენ გადამისამართება (გადამისამართება 301) ახალ მისამართზე. მაგალითად, გვერდზე / page.html იხსნება / fotojournal / page /.



როგორ შეაფასებ სტატიას?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 ( 10 რეიტინგი, საშუალოდ: 2.70 გარეთ 5)
იტვირთება ...

კომენტარის დამატება

თქვენი ელფოსტა არ გამოქვეყნდება.