Негізгі мазмұнға өту

Nginx қайта жазу ережесінің мысалдары



Мақала мазмұны:

Слэшпен url-ге бағыттау

Сайттардың кейбірі CMS соңында қиғаш сызықты немесе онсыз қозғалтқышты қайта бағыттамаса, беттерін ашуы мүмкін. Мысалы, келушінің тұрғысынан http://example.net/page және http://example.net/page/ беті бір болады. Бірақ іздестіру жүйелері үшін бұл екі түрлі парақ болып табылады, және слэш барлығы үшін кінәлі. Мазмұнның қайталануы нашар.

Слайдер бетіне қайта бағыттау үшін, сайтыңыз үшін nginx конфигурациясының файлына келесі жолды қосыңыз:


  қайта жазу ^ ([^.] * [^ /]) $ 1 / тұрақты; 

Енді қиғаш сызықсыз бет 306-шы жолға қиғаш сызықпен бағыттауға бағытталады. Кеңейтімдер (.html, .php және т.б.) бар беттер үшін бұл ереже әсер етпейді. Бұған қоса, әмбебап және қозғалтқыш php арқылы қайта бағыттауды жасамайды, бұл ереже адам оқылатын мекенжайларды пайдаланатын көптеген сайттар үшін тағайындалуы керек.

WordPress үшін қайта жазу

WordPress құжаттамасында қайта жазу ережелерінің жақсы мысалы бар. Мен php-fpm бірге жұмыс істеу үшін қажетті ең басты нәрсені бөліп аламын.

  орын / {
   try_files $ uri $ 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 $ uri / @rewrite;
 }
 орын @rewrite {
 қайта жазу ^ / (. *) $ /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 ~ * index (php | html)) {
   қайта жазу ^ (. +) index.php $ scheme: // $ host $ 1 тұрақты;
 } 

Бұл жағдайда, индекс файлы түбірлік қалтада немесе ішкі қалтада болса, маңызды емес, қайта бағыттау үнемі жұмыс істейді.

Басқа

Менің блогымның біреуі сілтемелер құрылымын өзгерту туралы шешім қабылдады. Бұрын барлық хабарлар / postname.html сияқты сілтемелер арқылы қол жетімді болды, енді олар басқа мекен-жайға көшті: / fotojournal / postname /. Бастапқыда, шешім ретінде, Wordpress-ке қайта бағыттау плагинін пайдалану туралы ойладым, бірақ содан кейін оны nginx-да қолдануға тырыстым. Ал идея шықты. :)



Рас, бұл ереже қарапайым болды, себебі барлық беттер /%postname%.html бір санатқа ауыстырылды - фотожурнал. Бұл ереже келесідей:

  орналасуы ~ * \. (html) $ {
   try_files $ uri $ uri / @fotojournal;
 }

 орын @fotojournal {
   қайта жазу ^ / (. *) \. html $ / fotojournal / $ 1 / тұрақты;
 }

Біз толығырақ қарастырамыз. Сұрау пайдаланушыдан шыққанда, алдымен .html кеңейтімі бар кез келген файл тораппен бірге қалтада ізделеді. Бұл сайтта нақты санаттағы html-беттер үшін қажет, бұл жаңа санатқа көшірілмеуі керек.

Егер сұралған бет табылмаса, сұрау екінші орынға қайта бағытталады - @fotojournal. Мұнда сіз қайта бағытталасыз (301 бағыттау) жаңа адреске. Мысалы, page / page.html бетінде / fotojournal / page / ашылады.



Сіз мақаланы қалай бағалайсыз?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 ( 10 рейтинг, орташа: 2.70 5)
Жүктелуде ...

Пікір қосу

Сіздің электронды поштаңыз жарияланбайды.