htaccess ფაილი ცვლის სერვერის პარამეტრებს, რომლებიც გავლენას ახდენენ. htaccess ფაილი: აპლიკაცია, ჩართვა, კონფიგურაცია

ჩვენ ვიყენებთ Apache httpd-ს, როგორც ჩვენს მთავარ ვებ სერვერს. Apache გამოიყენება მსოფლიოში ვებ სერვერების უმეტესობის ორგანიზებისთვის და მისი კლასის ყველაზე მასიური პროდუქტია. ეს სერვერი არის ძალიან კონფიგურირებადი, ძალიან უნარიანი და მხარს უჭერს ყველა ცნობილ პროტოკოლს ვებ სერვერების გასაშვებად. განსაკუთრებით Apache-სთვის შეიქმნა ისეთი პოპულარული პროგრამირების ენების ვერსიები, როგორიცაა Perl და PHP, და ეს სერვერი ასევე ადვილად ინტეგრირებულია ფართოდ გამოყენებულ DBMS-თან (მაგალითად, MySQL).

პროექტის მთავარი საიტი არის httpd.apache.org და 1.3.xx ვერსიის ძირითადი დოკუმენტაცია ხელმისაწვდომია httpd.apache.org/docs/.

ჩვენ მომხმარებლებს ვაძლევთ Apache-ის თვითკონფიგურირების შესაძლებლობას შესაბამისი დირექტივების გამოყენებით . ამ გზით თქვენ შეგიძლიათ გადაჭრათ ვებ სერვერის კონფიგურაციის ამოცანების უმეტესი ნაწილი მასობრივი ჰოსტინგის გარემოში.

ინდექსის ფაილი

ინდექსის ფაილი ან ინდექსის ფაილი არის ფაილი, რომელიც იხსნება ნაგულისხმევად, როდესაც მომხმარებელი წვდება დირექტორიას ინტერნეტში და არა კონკრეტულ ფაილზე. მაგალითად, თქვენი სტუმარი ითხოვს მისამართს http://your_domain/price/, სადაც ფასი არის კატალოგის სახელი. ინდექსის ფაილი არის ფაილი, რომელიც გამოჩნდება მომხმარებელს დირექტორიაში შესვლისას სახელის მითითების გარეშე. კონკრეტული ფაილიმასში.

ნაგულისხმევი ინდექსის ფაილებია: index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm, ან default.html. თუ გსურთ, რომ სხვა ფაილი გაიხსნას ჯერ, თქვენ უნდა გადააჭარბოთ მიმდინარე მნიშვნელობებს. წაიკითხეთ როგორ გააკეთოთ ეს.

.htaccess ფაილის დანიშნულება და გამოყენება

ფაილი .htaccess(გაითვალისწინეთ, რომ ფაილის სახელის პირველი სიმბოლო არის წერტილი) გამოიყენება Apache ვებ სერვერის გასაკონტროლებლად ჰოსტინგის საბოლოო მომხმარებლის მხრიდან. თქვენ ამ ფაილში დებთ დირექტივებს, რომლებსაც ვებ სერვერი იღებს და ამუშავებს, ახორციელებს მოქმედებებს მომხმარებლის მიერ გაკეთებული პარამეტრების შესაბამისად.

.htaccess ფაილი შეიძლება განთავსდეს ვებ სერვერის root დირექტორიაში (პირდაპირ დირექტორიაში www). ამ შემთხვევაში, ასეთი .htaccess-ის დირექტივები მოქმედებს მთელი ვებ სერვერისთვის. ასევე, .htaccess შეიძლება განთავსდეს სერვერის კონკრეტულ ქვედირექტორიაში. შემდეგ დირექტივები, რომლებიც მითითებულია ამ ფაილში, "გადალახავს" დირექტივების მოქმედებას "მთავარი" ფაილიდან, რომელიც მდებარეობს დირექტორიაში. wwwან უფრო მაღალი დონის დირექტორიაში. ანუ .htaccess-დან დირექტივების ეფექტი მემკვიდრეობით მიიღება ზემოდან ქვემოდან, მაგრამ არა პირიქით. ფაილში განხორციელებული ცვლილებები დაუყოვნებლივ ამოქმედდება. ეს გამოწვეულია იმით, რომ .htaccess-ის ინფორმაცია ხელახლა იკითხება Apache ვებ სერვერზე წვდომისას.

ვებ სერვერზე არსებული დირექტივების უმეტესობა შეიძლება განთავსდეს .htaccess-ში. უნდა აღინიშნოს, რომ დირექტივები, რომელთა აღწერაში Context ველში არ არის ნახსენები .htaccess, არ არის ხელმისაწვდომი ამ კონფიგურაციის ფაილში გამოსაყენებლად. მაგალითად AddType დირექტივის გამოყენებით, ჩვენ ვხედავთ, რომ Context ველი შეიცავს .htaccess-ის ხსენებას, ასე რომ თქვენ შეგიძლიათ გამოიყენოთ იგი:

თუ თქვენ ვერ იყენებდით საჭირო დირექტივას და დაინახეთ შეცდომა .htaccess-ში დირექტივის დამატების შემდეგ, დიდი ალბათობით, საერთო ჰოსტინგის პირობებში ბრძანების გამოყენება აკრძალულია. მოგვწერეთ ტექნიკურ მხარდაჭერას, ჩვენ ვეცდებით დაგეხმაროთ. გთხოვთ, დეტალურად აღწერეთ პრობლემა და მიუთითეთ მიზნები, რომელთა მიღწევაც გსურთ ამ დირექტივის გამოყენებით.

ვებ აპლიკაციის Firewall

ვებ აპლიკაციის Firewall (ModSecurity) საჭიროა ვებსაიტებზე თავდასხმების აღმოსაჩენად და თავიდან ასაცილებლად. შემოწმება ტარდება გარკვეული წესებით და თუ ის არ გავიდა, საიტის მოთხოვნა უარყოფილია შეცდომით (403 აკრძალულია).

ცრუ დადებითი შედეგების შემთხვევაში, შესაძლებელია წესების გამორთვა .htaccess-ის საშუალებით ქვემოთ მოცემული ვარიანტების გამოყენებით:

  • SecRuleRemoveById - წაშალეთ წესი id-ით
  • SecRuleRemoveByTag - წაშალეთ წესი ტეგით.

თქვენ შეგიძლიათ განსაზღვროთ რომელი წესი უნდა იყოს გამორთული შეცდომების ჟურნალში error.log

ID-ით გამორთვის მაგალითი:

SecRuleRemoveById 933100 933150

ტეგის მიერ გამორთვის მაგალითები:

SecRuleRemoveByTag "attack-injection-php" SecRuleRemoveByTag "CWAF"

კოდირების უგულებელყოფა:

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

ამისათვის გადადით სერვისების ხის განყოფილებაში და აირჩიეთ დომენი, რომლის კოდირების ტიპი გსურთ შეცვალოთ. შემდეგი, პარამეტრების სიაში იპოვეთ ხაზი კოდირება (ნაგულისხმევი)და დააწკაპუნეთ დაამატეთროგორც ნაჩვენებია ქვემოთ მოცემულ ფიგურაში.

თქვენ ასევე შეგიძლიათ შეცვალოთ კოდირება .htaccess ფაილის გამოყენებით. ამისათვის დაამატეთ ხაზი

AddType "text/html; charset=koi8-r" .html .htm .shtml

ასეთი .htaccess-ის მიღების შემდეგ, Apache ვებ სერვერი გამოსცემს სათაურს კლიენტის ბრაუზერზე, რომელიც მიუთითებს, რომ დოკუმენტს აქვს koi8-r კოდირება.

თუ თქვენს რესურსს აქვს html დოკუმენტები სხვადასხვა კოდირებით (ISO-8859-1, Windows-1250, Windows-1252, UTF-8), მაშინ შეიძლება დაგჭირდეთ სათაურის იძულებითი გამოშვების გამორთვა Windows-1251 კოდირებით. ამისათვის ხაზი ემატება .htaccess-ს:

AddDefaultCharset გამორთულია

ამ შემთხვევაში, შესაბამისი კოდირება უნდა დაიწეროს თითოეულ html გვერდზე ტეგის სახით

მაგალითი: როგორ ჩაკეტოთ დირექტორია პაროლით

ერთ-ერთი საერთო ამოცანა, რომელსაც აგვარებს .htaccess, არის სერვერის კონკრეტულ დირექტორიაზე წვდომის შეზღუდვა. მაგალითად, თქვენ უნდა მიანიჭოთ წვდომა ცალკეულ ვიზიტორებს გარკვეულ დირექტორიაში, ხოლო მათ მიაწოდოთ უნიკალური შესვლა და პაროლი.

დირექტორიაში, რომელზეც გვსურს შეზღუდოთ წვდომა პაროლით, შექმენით .htaccess ფაილი შემდეგი დირექტივებით:

AuthType ძირითადი AuthName "Some Name" AuthUserFile /home/ uXXXXXX/.htpasswd მოითხოვს ვალიდ-მომხმარებელს

გზა /home/uXXXXXX/.htpasswdაღნიშნავს პაროლის ფაილის სრულ გზას ჩვენი სერვერის დისკზე. თუ, მაგალითად, თქვენ განათავსებთ .htpasswd ფაილს (ის შეიცავს პაროლებს) თქვენს მთავარ დირექტორიაში, სადაც სერვერზე შეხვალთ FTP-ის საშუალებით, მაშინ ამ ფაილის გზა ასე გამოიყურება. /home/uXXXXXX/.htpasswd, სად uXXXXXX- თქვენი ვირტუალური საიტის სახელი (მაგალითად, u12345).

AuthUserFile დირექტივაში ვაზუსტებთ ფაილის აბსოლუტურ გზას ლოგინებით/პაროლებით, რომელსაც შევქმნით ცოტა მოგვიანებით. თუ თქვენ შექმნით .htaccess ფაილს თქვენს კომპიუტერში, ნაცვლად უშუალოდ სერვერზე ტექსტის რედაქტორი, გაითვალისწინეთ, რომ .htaccess უნდა გადაიცეს FTP-ის საშუალებით მკაცრად ტექსტის (ASCII) რეჟიმში.

შექმენით პაროლის ფაილი. პაროლის ფაილი უნდა შეიცავდეს ხაზებს, როგორიცაა შესვლა პაროლი. პაროლი უნდა იყოს დაშიფრული MD5 ალგორითმის გამოყენებით. ასეთი ფაილის შექმნის ერთ-ერთი გზა არის პროგრამის გამოყენება, რომელსაც მოყვება Apache - htpasswd (ჩვენს სერვერზე ის მდებარეობს დირექტორიაში /usr/local/bin/სრული გზა - /usr/local/bin/htpasswd).

იფიქრეთ იმაზე, თუ როგორ უნდა შექმნათ პაროლის ფაილი unix shell-ში პირდაპირ სერვერზე. მოდით გადავიდეთ გარსზე და შევასრულებთ შემდეგ ბრძანებებს:

  • htpasswd -mbc .htpasswd user1 sNQ7j9oR2wშექმნა ახალი ფაილი.htpasswd, რომელშიც ჩვენ ვამატებთ ჩანაწერს მომხმარებლის user1-ში მითითებული პაროლით ბრძანების ხაზი. მოთხოვნა აუცილებლადშეცვალეთ sNQ7j9oR2w თქვენი საკუთარი პაროლით - ეს პაროლი მოცემულია აქ მხოლოდ მაგალითად
  • htpasswd .htpasswd user2 ემატება user2-ის უკვე არსებულ .htpasswd ფაილს და პაროლი ხელით შეიყვანება შესაბამისი პროგრამის მოთხოვნის პასუხად.

თუ იყენებთ Windows-ს და არ გსურთ unix-ის გამოყენება პაროლების გენერირებისთვის, შეგიძლიათ ჩამოტვირთოთ htpasswd პროგრამის Windows ვერსია და შექმნათ პაროლის ფაილი თქვენს კომპიუტერში, შემდეგ ატვირთოთ ის სერვერზე. თუ თქვენ უკვე გაქვთ დაინსტალირებული Apache-ს Windows ვერსია, ფაილი htpasswd.exeშეგიძლიათ ნახოთ კატალოგში პროგრამის ფაილები\Apache Group\Apache\bin\.

ასე რომ, მიიღეთ htpasswd.exe და გამოიყენეთ იგი ასეთი პაროლების შესაქმნელად:

  • htpasswd.exe -mc .htpasswd user1შექმენით ახალი პაროლის ფაილი htpasswd.exe, პაროლი და მისი დადასტურება მოთხოვნილი იქნება ინტერაქტიულად
  • htpasswd.exe -m .htpasswd user2დაამატეთ მომხმარებლის user2 არსებული htpasswd.exe პაროლის ფაილში პაროლის ინტერაქტიულად მოთხოვნით

ყველა შესვლის დასრულების შემდეგ, ფაილი უნდა აიტვირთოს სერვერზე.

მაგალითი: ინდექსის ფაილის გადაფარვა

სიტუაცია: მომხმარებელმა შეაღწია დირექტორიაში http://www.your_domain.ru/price/.ასეთი თხოვნით პირველი იხსნება და გამოჩნდება. თუ გსურთ ინდექსის ფაილის გადაფარვა და ისე გახადეთ, რომ პირველი გახსნილი ფაილი არ იყოს index.htm, არამედ, მაგალითად, ფაილი myindex.php, მაშინ ამის გაკეთება შეგიძლიათ შემდეგი ინსტრუქციის განთავსებით .htaccess ფაილში შესაბამის დირექტორიაში:

DirectoryIndex myindex.php

ასეთი შინაარსით .htaccess მიღების შემდეგ, Apache ვებ სერვერი გახსნის ფაილს ნაგულისხმევად myindex.php.

მაგალითი: ჩამონათვალის გაცემის აკრძალვა და ნებართვა

ზოგიერთ შემთხვევაში, საჭიროა დირექტორიაში ფაილების სიის ჩვენება (საქაღალდეების ჩამონათვალი) იმ შემთხვევაში, თუ დირექტორიაში არ არის ფაილი, რომელიც ნაჩვენებია ნაგულისხმევად. ამისათვის დაამატეთ შემდეგი ხაზი .htaccess-ს:

ოფციები + ინდექსები

.htaccess ფაილი უნდა შეიქმნას ზუსტად იმ დირექტორიაში, რომელშიც აპირებთ ჩამონათვალის დაშვებას. ეს დირექტივა ასევე იმოქმედებს ყველა ქვედირექტორიაზე (ეს მიიღწევა ვირტუალური ჰოსტის პარამეტრებში ნაგულისხმევად ჩართული დირექტივით AllowOverride All).

დირექტივა ჩართულია ნაგულისხმევად. ოფციები-ინდექსებიდა თუ მიიღებთ HTTP შეცდომა 403.

თუ ფაილების სახელებში კოდირება სწორად არ არის ნაჩვენები, გამოიყენეთ Charset თვისება სწორი კოდირების დასაზუსტებლად. მაგალითად, UTF-8 კოდირებით კირიული სიმბოლოების საჩვენებლად, დაამატეთ შემდეგი ინსტრუქცია .htaccess ფაილში:

IndexOptions Charset=UTF-8

მაგალითი: მორგებული შეცდომის გვერდები

მაგალითი: გარკვეული IP მისამართებიდან წვდომის უარყოფა

ზოგჯერ საჭირო ხდება საიტზე ან მის ნაწილზე წვდომის აკრძალვა გარკვეული IP მისამართებიდან.

ამ შემთხვევაში, თქვენ უნდა შექმნათ .htaccess ფაილი დირექტივებით სასურველ დირექტორიაში. მაგალითად, 172.16.16.16 IP მისამართიდან წვდომის უარსაყოფად:

შეუკვეთეთ ნება, უარყოთ დაშვება ყველა უარყოფისგან 172.16.16.16-დან

ახლა, როდესაც ცდილობთ საიტზე შესვლას IP მისამართიდან 172.16.16.16 ვიზიტორი მიიღებს 403 შეცდომას ან თქვენს გვერდს ამ შეცდომისთვის.

ფორმაში მისამართის ნაწილის მითითება 172.16.16 შეზღუდოს წვდომა ქვექსელიდან 172.16.16/24.

ზოგჯერ თქვენ უნდა გააკეთოთ პირიქით და დაბლოკოთ საიტზე წვდომა ყველა IP-სთვის, გარდა თქვენი (). მაგალითად, მხოლოდ IP მისამართზე წვდომის დასაშვებად 172.16.16.16, დაამატეთ შემდეგი განცხადება თქვენს .htaccess ფაილში:

შეუკვეთეთ ნება, უარყოთ დაშვება 172.16.16.16-დან

უფრო დეტალური დოკუმენტაციისთვის იხილეთ Apache დოკუმენტაცია.

მაგალითი: შეზღუდეთ წვდომა გარკვეულ ფაილებზე

ზოგჯერ საჭირო ხდება გარკვეულ ფაილებზე წვდომის უარყოფა. მაგალითად, კონფიგურაციის ფაილებზე, რომლებიც შეიცავს მონაცემთა ბაზებზე წვდომის დეტალებს, ინტერფეისებს და ა.შ. ვთქვათ ფაილში config.cfgთქვენ ინახავთ შესვლას/პაროლს მონაცემთა ბაზაში შესასვლელად. შექმენით .htaccess ფაილი ამ დირექტორიაში დირექტივებით:

შეუკვეთეთ დაშვება, უარყავით ყველასგან უარი

ახლა, თუ ვიზიტორი აკრიფებს ბრაუზერში რაღაცას http://www.your_domain.ru//config.cfg, ის მიიღებს 403 შეცდომას ან თქვენს გვერდს ამ შეცდომისთვის.

მაგალითი: ბოლო შეცვლილი სათაური

ზოგიერთ შემთხვევაში, საჭიროა, რომ ვებ სერვერმა გაუშვას HTTP სათაური ბოლო შეცვლილია. მაგალითად, Yandex-ზე თქვენი რესურსის რეგისტრაციისას ჩნდება შეცდომა " არასწორი თარიღები». სტატიკური დოკუმენტებისთვის სერვერი ყოველთვის დააბრუნებს ბოლო შეცვლილ მნიშვნელობას. ეს მოქმედებს html ფაილებისთვის. SSI-სთვის, სერვერი დააბრუნებს ბოლო შეცვლილ მნიშვნელობას, თუ მითითებულია "XBitHack full" დირექტივა (უბრალოდ ჩაწერეთ ეს სტრიქონი .htaccess-ში) და ჯგუფისთვის "შესასრულებელი" ატრიბუტი დაყენებულია ფაილისთვის, რომლის წვდომაც ხდება. სკრიპტებში ბოლო შეცვლილი ბრუნდება სხვა საშუალებებით. მაგალითად, იმის გათვალისწინებით, რომ php სკრიპტი დინამიურად აგენერირებს კოდს, ყველაზე ლოგიკური იქნება ბოლო მოდიფიცირებულის მიცემა მიმდინარე თარიღიდა დრო./>

ეს ხორციელდება შემდეგნაირად:

ყურადღება: ბრძანება სათაურიუნდა შესრულდეს php სკრიპტით, სანამ სკრიპტი დაიწყებს html ტექსტის გამოტანას მომხმარებლის ბრაუზერში.

გადაწყვეტილება
  • htaccess ფაილის სინტაქსი
  • htaccess წვდომის კონფიგურაცია
  • URL-ის მოდიფიკაცია htaccess-ში
  • გადამისამართებების დაყენება htaccess-ში
  • შეცდომის გვერდების კონფიგურაცია htaccess-ში
  • ქეშირება htaccess-ში
  • ფაილების შეკუმშვა htaccess-ში
  • პაროლის ჩაკეტვის დირექტორიები
  • კოდირება
  • PHP ვერსია სასურველ საქაღალდეში და შეცვალეთ დამმუშავებელი ფაილის ტიპის მიხედვით

HTACCESS ფაილის სინტაქსი

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

დირექტივების ზოგადი სინტაქსი ძალიან მარტივია, ისინი არის ბრძანებების წყვილი და მათი ვარიანტები გამოყოფილი სივრცეებით, მაგალითად:

ბრძანება parameter1 parameter2 დროშები

თავად ბევრი ბრძანებაა და ჩვენ განვიხილავთ მათ იმ მოქმედებების მაგალითების გამოყენებით, რომლებსაც ისინი ასრულებენ. გარდა თავად ბრძანებებისა, აქ შეიძლება გამოყენებულ იქნას წყობილი სტრუქტურები, მაგალითად, მოდულების გასააქტიურებლად ან კონკრეტული მოდულის ხელმისაწვდომობის შესამოწმებლად. ახლა კი მოდით მივუახლოვდეთ იმას, თუ როგორ შესრულებულია იგი სწორი პარამეტრი htaccess. დავიწყოთ უმარტივესი ნაბიჯებით.

გადადით თქვენს cPanel დესკტოპზე და გადადით " Ფაილის მენეჯერი"

გადადით public_html საქაღალდეში და შექმენით ფაილი სახელწოდებით ".htaccess"

შექმენით სასურველი საქაღალდე და .htaccess ფაილი public_html საქაღალდეში ან უფრო მაღალ საქაღალდეში.

ჩართეთ ჩვენება ფარული ფაილები, "პარამეტრები" განყოფილებაში მარჯვნივ, ზედა.

და შეცვალეთ .htaccess ფაილი ფაილზე მარჯვენა ღილაკით და აირჩიეთ Edit

HTACCESS ACCESS SETUP

ხშირად htaccess გამოიყენება საქაღალდეზე წვდომის გასაკონტროლებლად. წვდომის გასაკონტროლებლად გამოიყენება სამი ბრძანება:

  • შეკვეთა- შეკვეთა;
  • უარყოფენ- აკრძალვა;
  • დაუშვას- ნება დართო.

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

შემდეგ, დაშვების ან უარყოფის დირექტივის გამოყენებით, ჩვენ ვუშვებთ ან უარვყოფთ საქაღალდეზე წვდომას კონკრეტული მისამართებიდან. მაგალითად, იმისათვის, რომ გამორთოთ ყველაფერი, რაც გჭირდებათ htaccess-ში დამატება:

ბრძანება უარყოფა, ნება
ყველასგან უარყო

მაგრამ ჩვენ ასევე შეგვიძლია დავუშვათ წვდომა მხოლოდ სასურველი ქვექსელიდან ან IP მისამართიდან:

ბრძანება უარყოფა, ნება
ყველასგან უარყო
დაუშვით 192.168.0.

შეგიძლიათ გამოიყენოთ cPanel IP მისამართების დასაბლოკად


თუ მითითებულია უარყოფა, დაშვება, მაშინ შემოწმება განხორციელდება ამ თანმიმდევრობით. ჯერ ყველა უარყოფს დირექტივას, შემდეგ ყველა ნებას რთავს დირექტივას და თუ არცერთი პირობა არ ემთხვევა, მაშინ მოთხოვნა გამოტოვებულია. დაშვებით, უარყოფით, ასეთი მოთხოვნა ნაგულისხმევად უარყოფილი იქნება. მაგალითად, წინა მაგალითი შეიძლება დაიწეროს ასე:

შეუკვეთე დაშვება, უარყო
დაუშვით 192.168.0.

URL-ის მოდიფიკაცია HTACCESS-ში

htaccess-ის ყველაზე გავრცელებული გამოყენება არის URL-ების შეცვლა გაშვების დროს ან გადამისამართებების დროს. mod_rewrite მოდული პასუხისმგებელია ამ ფუნქციონირებაზე და ჩვეულებრივ ჩართულია Apache-ს უმეტეს კონფიგურაციაში.

URL-ის მოდიფიკაცია htacces-ში ხდება სამი დირექტივის გამოყენებით, ეს არის RewriteBase, რომელიც განსაზღვრავს მისამართის პრეფიქსს, RewriteCondამოწმებს შესაბამისობას და RewriteRule- ცვლის URL-ს რეგულარული გამოხატვის მიხედვით, თუ ყველა შესატყვისი წესი ემთხვევა.

ჯერ უნდა ჩართოთ Mod_Rewrite, იმ შემთხვევაში, თუ მოდული ჯერ არ არის აქტიური:

ჩართეთ ძრავის გადაწერა

მიუთითეთ, რომ root უნდა იყოს გამოყენებული URL-ის პრეფიქსის სახით:

და ჩვენ ავტომატურად შევცვლით მისამართის URL-ს index.html-დან index.php-ზე, გაითვალისწინეთ, რომ ორიგინალური URL არის მოთხოვნილი ფაილის გზა htaccess ფაილის ადგილმდებარეობის მიმართ:

RewriteRule index.html /index.php

უფრო ეფექტური ჩანაცვლებისთვის შეგიძლიათ გამოიყენოთ რეგულარული გამონათქვამები; ისინი შედგება სპეციალური სიმბოლოებისა და ცვლადებისაგან და ჩვეულებრივი სიმბოლოებისა და რიცხვებისგან. განვიხილოთ მთავარი სპეციალური სიმბოლოები:

  • ^ - ხაზის დასაწყისი;
  • $ - ხაზის დასასრული;
  • . - ნებისმიერი პერსონაჟი;
  • * - ნებისმიერი სიმბოლოების ნებისმიერი რაოდენობა;
  • ? - ერთი კონკრეტული სიმბოლო;
  • - სიმბოლოების თანმიმდევრობა, მაგალითად, 0-დან 9-მდე;
  • | - სიმბოლო ან, არჩეულია ერთი ან მეორე ჯგუფი;
  • () - გამოიყენება პერსონაჟების ჯგუფების შესარჩევად.

htaccess რეგულარულ გამონათქვამებში ასევე შეგიძლიათ გამოიყენოთ ცვლადები მოთხოვნის სათაურებიდან მიღებული მონაცემებით, მაგალითად:

  • %(HTTP_USER_AGENT)- მომხმარებლის აგენტის ველი, რომელიც გადაიცემა მომხმარებლის ბრაუზერის მიერ;
  • %(REMOTE_ADDR)- მომხმარებლის IP მისამართი;
  • %(REQUEST_URI)- მოითხოვა URI;
  • %(QUERY_STRING)- შეკითხვის პარამეტრები ნიშნის შემდეგ ?.

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

ძრავის გადაწერა ჩართულია;
RewriteBase /;

RewriteCond დირექტივა იძლევა კიდევ უფრო მეტ მოქნილობას, თქვენ შეგიძლიათ აირჩიოთ რომელ მისამართებზე გამოიყენოთ მოდიფიკაცია, მაგალითად, ჩვენ ხელახლა განვსაზღვრავთ მონაცემებს მხოლოდ www ვერსიისთვის:

RewriteBase /;
RewriteCond % (REMOTE_HOST) ^www.site.ru$
RewriteRule ^(.*)\.html$ $1.php

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

HTACCESS-ში გადამისამართების დაყენება

შეიტყვეთ მეტი SSL გადამისამართების შესახებ http-დან https-ზე.

htaccess გადამისამართებების დაყენება ხდება ანალოგიურად, იგივე mod_rewrite მოდულის გამოყენებით, მხოლოდ ახლა url-ის შეცვლის ნაცვლად ვაზუსტებთ დროშას სასურველი მოქმედებით და გადამისამართებთ კოდს.

უმარტივესი გადამისამართება შეიძლება გაკეთდეს mod_rewrite-ის გარეშე, ამ ხაზით:

გადამისამართება 301 /index.html http://www.site.ru/index.php

მაგრამ, როგორც წესი, საჭიროა უფრო ფართო ეფექტის გადამისამართება. ყველაფერი ძალიან ჰგავს, მხოლოდ ახლა ვიყენებთ დროშას რეგისტრის უგრძნობლად, [L] დამუშავების შესაჩერებლად და [R] გადამისამართებისთვის. მაგალითად, htaccess-ის გადამისამართება www გარეშე ვერსიიდან დომენზე www:

RewriteCond %(HTTP_HOST) ^site\.ru$
RewriteRule ^(.*)$ http://www.site.ru/$1

მნიშვნელობა R=301 ნიშნავს გადამისამართების კოდს, რომელიც დაუბრუნდება კლიენტს, შეგიძლიათ გამოიყენოთ 301, 302 და ა.შ. htaccess გადამისამართება www დომენიდან დომენზე პრეფიქსის გარეშე ასე გამოიყურება:

RewriteCond %(HTTP_HOST) ^www.site\.ru$
RewriteRule ^(.*)$ http://site.ru/$1

ანალოგიურად, შეგიძლიათ გააკეთოთ გადამისამართება:

RewriteRule ^old_address /new_address/$1

გადამისამართება http ვერსიიდან https-ზე:

RewriteCond %(SERVER_PORT) ^80$
RewriteCond %(HTTP)=ჩართულია
RewriteRule ^(.*)$ https://site.ru/$1

RewriteEngine On RewriteCond %(SERVER_PORT) !^443$ RewriteRule .* https://%(SERVER_NAME)%(REQUEST_URI)

შეცდომის გვერდების კონფიგურაცია HTACCESS-ში

თუ რაიმე შეცდომა მოხდა გვერდის გენერირებისას, ვებ სერვერის პრობლემები მოკლე შეტყობინებადა შეცდომის კოდი. მაგრამ მომხმარებლებისთვის გაცილებით ნათელი გახდება რა ხდება, თუ თითოეული შეცდომისთვის ცალკე გვერდს გააკეთებთ სურათებით და სრული ახსნით.

ამ ელემენტისთვის htaccess-ის დაყენება ძალიან სასარგებლო იქნება. შეგიძლიათ გამოიყენოთ ErrorDocument დირექტივა. მასთან ერთად შეგიძლიათ დააყენოთ გვერდის html 4xx და 5xx შეცდომებზე. მაგალითად, 404-ისთვის:

ErrorDocument 404 http://site.ru/error/404.shtml
ErrorDocument 403 http://site.ru/error/403.shtml
ErrorDocument 401 http://site.ru/error/401.shtml
ErrorDocument 500 http://site.ru/error/500.shtml

თუ შეცდომის გვერდები არ მუშაობს, იხილეთ.

ქეში HTACCESS-ში

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

ნაგულისხმევად, ჩვენ უკვე გვაქვს ჩართული ქეშირება ყველა კლიენტისთვის და თქვენ არაფრის გაკეთება არ გჭირდებათ.მაგრამ თქვენ შეგიძლიათ ხელახლა დააკონფიგურიროთ თქვენთვის.

ჯერ ჩვენ ვააქტიურებთ მოდულს და ვაყენებთ ნაგულისხმევი ქეშის პერიოდს:

იწურება აქტიური
Expires ნაგულისხმევი "წვდომა პლუს 1 თვე"

ახლა ჩვენ შეგვიძლია დავაკონფიგურიროთ ქეშირება mime ფაილის თითოეული ტიპისთვის:

ExpiresByType text/html "წვდომა პლუს 1 თვე 15 დღე 2 საათი"
ExpiresByType სურათი/გიფ "წვდომა პლუს 5 საათი 3 წუთი"
ExpiresByType სურათი/x-ხატი "წვდომა პლუს 2592000 წამი"

პირველ სტრიქონში ჩვენ აღვნიშნავთ, რომ html გვერდებიუნდა ჩაითვალოს ძალაში ერთი თვის განმავლობაში 15 დღე და ორი საათი ჩამოტვირთვის მომენტიდან. ხელმისაწვდომია ფაილის შემდეგი ტიპები:

  • გამოსახულება/x-ხატი;
  • სურათი/jpeg;
  • სურათი/png;
  • სურათი/გიფი;
  • აპლიკაცია/x-shockwave-flash;
  • ტექსტი/css;
  • ტექსტი/ჯავასკრიპტი;
  • აპლიკაცია/ჯავასკრიპტი;
  • აპლიკაცია/x-javascript;
  • ტექსტი/html;
  • აპლიკაცია/xhtml+xml;

იმისთვის, რომ დარწმუნდეთ, რომ ეს კონსტრუქცია არ გამოიწვევს შეცდომებს, ჩასვით ის, თუ:


ფაილების შეკუმშვა HTACCESS-ით

Apache-ში შეკუმშვისთვის შეგიძლიათ გამოიყენოთ deflate მოდული. ასევე შეგიძლიათ გამოიყენოთ Cpanel-ის ფუნქციები, .

აქ საკმარისია უბრალოდ ჩამოვთვალოთ შეკუმშული ფაილების mime ტიპები. Მაგალითად:

AddOutputFilterByType DEFLATE ტექსტი/html ტექსტი/უბრალო ტექსტი/xml აპლიკაცია/xml აპლიკაცია/xhtml+xml ტექსტი/css ტექსტი/javascript აპლიკაცია/javascript აპლიკაცია/x-javascript

თქვენ ასევე შეგიძლიათ დაურთოთ if განცხადება, რათა შეამოწმოთ არის თუ არა მოდული მხარდაჭერილი:


პაროლის ჩაკეტვის დირექტორიები

გამოიყენეთ cPanel განყოფილება

თუმცა, .htaccess ფაილი გამოიყენება Apache სერვერის კონფიგურაციისთვის და ასევე რამდენიმე სხვა სერვერისთვის. მიუხედავად უცნაური გაფართოებისა, ეს მარტივია ტექსტური ფაილი, რომელიც შეიძლება შეიცვალოს ნებისმიერ რედაქტორში. ამ გაკვეთილზე განვიხილავთ, თუ როგორ შეიძლება .htaccess-ის გამოყენება ჩვენს პროექტებში.

.htaccess ფაილი იყენებს იმავე ფორმატს, როგორც ძირითადი კონფიგურაციის ფაილი Apache-სთვის: httpd.conf. პარამეტრების უმეტესობის გამოყენება შესაძლებელია ორივე ფაილში.

დირექტორიაში .htaccess ფაილში დაყენებული პარამეტრები გადალახავს httpd.conf-ში დაყენებულ პარამეტრებს ამ დირექტორიაში და მისი ქვედამწერებისთვის.

.htaccess ფაილს ზოგჯერ მოიხსენიებენ, როგორც დინამიურ კონფიგურაციის ფაილს, რადგან სერვერი კითხულობს მას ყოველ ჯერზე, როცა მას შეიცავს თხოვნა დირექტორიაში. ეს ფაქტი ნიშნავს, რომ ცვლილებები .htaccess ფაილში ამოქმედდება დაუყოვნებლივ, სერვერის გადატვირთვის გარეშე, განსხვავებით ძირითადი კონფიგურაციის ფაილში. ეს ასევე ნიშნავს, რომ თქვენ კარგავთ ეფექტურობას .htaccess ფაილის გამოყენებისას. მაგრამ ეს ძალიან მოსახერხებელია იმ შემთხვევებისთვის, როდესაც არ არის წვდომა მთავარი სერვერის კონფიგურაციის ფაილზე.

გადამისამართებები და URL-ის ცვლილებები

.htaccess ფაილის პოპულარული გამოყენებაა გადამისამართებების ან URL ცვლილებების დაყენება. ეს მეთოდიეხმარება SEO-ს მიზნებისთვის დომენის სახელის შეცვლაში, ან პროექტის ფაილის სტრუქტურის გადაკეთებაში, ან გრძელი ძნელად დასამახსოვრებელი URL-ების მარტივ და გასაგებად ქცევაში.

გადამისამართებები

გადამისამართებები შეიძლება იყოს ძალიან მარტივი, მაგალითად:

გადამისამართება 301 ^old\.html$ http://localhost/new.html

ამ შემთხვევაში, გამოიყენება HTTP სტატუსის კოდი 301 (გადატანილია მუდმივად) და ყველა მოთხოვნა old.html-ზე გადამისამართებულია new.html-ზე. ეს იყენებს რეგულარულ გამონათქვამს URL-ის წესთან შესატყვისად, რაც ართულებს წესის აგებას, მაგრამ დარწმუნდება, რომ URL სწორია. თქვენ უნდა მიუთითოთ რესურსის სრული URL, რომელზეც გადამისამართდებით.

ცვლილებები

ცვლილების წესი ასევე შეიძლება იყოს ძალიან მარტივი:

RewriteEngine RewriteRule-ზე ^old\.html$ new.html

AT ეს მაგალითიარის მარტივი გადამისამართება ერთი ფაილიდან მეორეზე, რომელიც ხორციელდება გამჭვირვალედ, ბრაუზერში მისამართის ზოლის შინაარსის შეცვლის გარეშე. პირველი დირექტივა, RewriteEngine on , უბრალოდ უზრუნველყოფს გადაწერის ძრავის მუშაობას.

ვიზიტორის ბრაუზერის მისამართის ზოლის შინაარსის გასაახლებლად, შეგვიძლია გამოვიყენოთ R დროშა RewriteRule-ის ბოლოს:

RewriteRule ^old\.html$ http://hostname/new.html

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

ერთი შესაძლო გამოყენებაგადამისამართებები - URL-ების შეცვლა უფრო მარტივ ფორმაზე ვიზიტორებისთვის და საძიებო რობოტებისთვის. განვიხილოთ მაგალითი:

RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3

ეს წესი საშუალებას აძლევს ვიზიტორს გამოიყენოს URL მსგავსი პროდუქტები/ტურნტაიდები/ტექნიკა/sl1210, რომელიც გარდაიქმნება product.php?cat=turntables& brand=technics&prod=sl1210.მაგალითში რეგექსის ხაზებს შორის ფრჩხილები ასრულებენ დაჯგუფებას - ჩვენ შეგვიძლია გამოვიყენოთ თითოეული მათგანი, როგორც $1, $2 და $3, შესაბამისად. კომბინაცია [^/]+ ფრჩხილებში ემთხვევა ნებისმიერ სიმბოლოს, გარდა ზოლისა, ნებისმიერ რიცხვში.

პრაქტიკაში, URL-ის შეცვლას აქვს ბევრად უფრო რთული წესები, ვიდრე ჩვენს მაგალითებშია აღწერილი, მაგრამ ისინი საშუალებას გვაძლევს გადავჭრათ ძალიან რთული პრობლემები.

მორგებული შეცდომის გვერდი

ვებსაიტზე სტანდარტული 404 გვერდის ჩვენება არაპრაქტიკულია. ბევრი საიტი იყენებს ამ ფუნქციას, რომ შესთავაზოს ვიზიტორს შეცდომის გვერდი, რომელიც შეესაბამება დანარჩენი შინაარსის სტილს და Დამატებითი ინფორმაციარომელსაც შეუძლია სტუმრის შენარჩუნება.

404 გვერდის შეცვლის წესი ძალიან ჰგავს გადამისამართების წესს:

შეცდომადოკუმენტი 404 "/404.html"

თუ 404 შეცდომა მოხდა, მითითებული გვერდი გამოჩნდება. თქვენ ასევე შეგიძლიათ შექმნათ გვერდები სერვერის სხვა შეცდომების საჩვენებლად.

გარკვეული რესურსების ხელმისაწვდომობის შეზღუდვები

.htaccess ფაილით ჩვენ შეგვიძლია შევზღუდოთ წვდომა ნებისმიერ ფაილზე ან დირექტორიაზე. მაგალითად, კოდი:

AuthName "შეიყვანეთ მომხმარებლის სახელი და პაროლი" AuthUserFile /path/to/.htpasswd მოითხოვება მოქმედი მომხმარებლის AuthType Basic

ის უნდა განთავსდეს დირექტორიაში, რომლის დაცვაც გსურთ თავისუფალი წვდომისგან. AuthName დირექტივა განსაზღვრავს შეტყობინებას, რომელიც გამოჩნდება პაროლის დიალოგურ ფანჯარაში, ხოლო AuthUserFile წესი განსაზღვრავს გზას .htpasswd ფაილისკენ. Require დირექტივა განსაზღვრავს, რომ ფაილზე წვდომა მხოლოდ დარეგისტრირებულ მომხმარებლებს შეუძლიათ.

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

AuthName "შეიყვანეთ მომხმარებლის სახელი და პაროლი" AuthUserFile /path/to/.htpasswd მოითხოვება მოქმედი მომხმარებლის AuthType Basic

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

გარკვეული ვიზიტორებისთვის წვდომის დაბლოკვა

.htaccess ფაილის კიდევ ერთი გამოყენება არის კონკრეტული IP მისამართის ან აგენტის ყველა მოთხოვნის სწრაფად და მარტივად დაბლოკვა. თქვენ უბრალოდ უნდა დაამატოთ წესები .htaccess ფაილში:

შეუკვეთეთ დაშვება, უარი თქვით 192.168.0.1-დან დაუშვით ყველასგან

შეკვეთის დირექტივა ეუბნება Apache-ს, რა მიზნით განიხილოს დირექტივების დაშვება/უარი. მაგალითში ჯერ ფასდება დაშვების დირექტივა, შემდეგ უარყოფა. დაშვება ყველა წესიდან განიხილება პირველ რიგში (მიუხედავად იმისა, რომ იგი განისაზღვრება ფაილში უარყოფის წესის შემდეგ) და დაშვებულია ყველა IP მისამართი. შემდეგ, თუ კლიენტის IP მისამართი ემთხვევა უარყოფის დირექტივაში მითითებულს, მაშინ მასზე წვდომა იბლოკება. თქვენ შეგიძლიათ დაბლოკოთ წვდომა IP მისამართების დიაპაზონზე, მაგალითად, მითითებით: 192.168 .

გარკვეულ აგენტებზე წვდომის დასაბლოკად, შეგიძლიათ გამოიყენოთ სხვა წესები:

RewriteCond %(HTTP_USER_AGENT) ^OrangeSpider RewriteRule ^(.*)$ http://%(REMOTE_ADDR)/$

ამ მაგალითში, ნებისმიერი კლიენტი, რომლის HTTP_USER_AGENT სტრიქონი იწყება OrangeSpider-ით (ცუდი ბოტი), გადამისამართდება მისამართზე, საიდანაც მოვიდა. რეგულარული გამოხატულება ემთხვევა რომელიმე სიმბოლოს (.) ნებისმიერ რიცხვში (*) და ცვლადი %(REMOTE_ADDR) გამოიყენება მისამართისთვის. l დროშა ეუბნება აპაჩის ამას ეს წესიარის ბოლო კლიენტისთვის და სხვა ოპერაციების შესრულება არ არის საჭირო.

მიუთითეთ გამომავალი რეჟიმი IE-სთვის

გარდა იმისა, რომ ვაკონტროლებთ სერვერის პასუხებს გარკვეულ მოთხოვნებზე, ჩვენ შეგვიძლია გავლენა მოახდინოთ მომხმარებლების ბრაუზერებზე, როგორიცაა IE-ს მითითება კონკრეტულ რენდერის ძრავაზე. თქვენ შეგიძლიათ გამოიყენოთ mod_headers მოდული, თუ ეს არის, X-UA-თავსებადი სათაურის დასაყენებლად:

სათაურის ნაკრები X-UA-თავსებადი "IE=Edge"

ამ ხაზის დამატება .htaccess ფაილში IE-ს დაავალებს გამოიყენოს საუკეთესო ხელმისაწვდომი ჩვენების რეჟიმი. ჩვენ ასევე შეგვიძლია თავიდან ავიცილოთ ამ სათაურის გამოყენება იმ ფაილებისთვის, სადაც ეს არ არის საჭირო წესის გამოყენებით :

სათაური გაუქმებულია X-UA-თავსებადი

ჩართეთ ქეშირება

ქეშირების ინსტალაცია ძალიან მარტივია და თქვენი საიტის უფრო სწრაფად ჩატვირთვას ხდის. რესურსებისთვის, რომლებიც იშვიათად იცვლება, განახლების თარიღის დაყენებით, ჩვენ შეგვიძლია თავიდან ავიცილოთ უცვლელი შინაარსის ნაწილის მრავალჯერ ჩამოტვირთვა.

Მაგალითად:

ExpiresActive on ExpiresByType image/gif "წვდომა პლუს 1 თვე" ExpiresByType image/png "წვდომა პლუს 1 თვე" ExpiresByType image/jpg "წვდომა პლუს 1 თვე" ExpiresByType image/jpeg "წვდომა პლუს 1 თვე" ExpiresByType "access plus 1 თვე" თვე" ExpiresByType აუდიო/ogg "წვდომა პლუს 1 თვე" ExpiresByType ვიდეო/mp4 "წვდომა პლუს 1 თვე" ExpiresByType ვიდეო/ვებმ "წვდომა პლუს 1 თვე"

თქვენ შეგიძლიათ დაამატოთ ExpiresByType წესები ნებისმიერი ტიპის კონტენტისთვის. ExpiresActive on დირექტივა უბრალოდ რთავს რესურსის ვადის გასვლის სათაურის გენერირებას. ეს დირექტივა დამოკიდებულია მოდულის არსებობაზე mod_expires Apache სერვერზე.

შეკუმშვის ჩართვა

რესურსის შესრულებაზე გავლენის კიდევ ერთი გზა არის შეკუმშვის გამოყენება:

FilterDeclare COMPRESS FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css FilterProvider COMPRESS DEFLATE resp=კონტენტის ტიპი $text/html

ეს შეკუმშვის სქემა მუშაობს Apache-ს ახალ ვერსიებზე (2.1+) დაინსტალირებული მოდულით mod_filter. ის იყენებს DEFLATE ალგორითმს შინაარსის შეკუმშვისთვის. მაგალითში, ჩვენ ვაკონკრეტებთ ტექსტს/html , ტექსტს/css და ტექსტს/ჯავასკრიპტს, როგორც შეკუმშულ რესურსებს.

ფილტრის განმარტება იწყება FilterDeclare დირექტივით COMPRESS ოფციით. შემდეგ ჩამოთვლილია კონტენტის ტიპები, რომლებზეც ფილტრი იმოქმედებს. FilterChain წესი ეუბნება სერვერს შექმნას ჯაჭვი FilterProvider-ის წესების ჩამონათვალზე დაყრდნობით. FilterProtocol დირექტივა გაძლევთ საშუალებას მიუთითოთ პარამეტრები, რომლებსაც ფილტრი იყენებს შესრულების დროს. თქვენ უნდა მიუთითოთ ოფციები change=yes (შინაარსი შეიძლება შეიცვალოს ფილტრით (ჩვენს მაგალითში - შეკუმშული)) და byteranges=no (ფილტრის გამოყენება შესაძლებელია მხოლოდ სრული ფაილებისთვის).

Apache-ს ძველი ვერსიები იყენებენ მოდულს mod_deflate DEFLATE შეკუმშვის კონფიგურაციისთვის. აქ ფილტრზე ნაკლები კონტროლია, მაგრამ წესები უფრო მარტივია:

SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE ტექსტი/html ტექსტი/css ტექსტი/javascript

მაგალითი ადგენს შეკუმშვის ალგორითმს SetOutputFilter წესის გამოყენებით და განსაზღვრავს ფილტრის შინაარსის ფაილის ტიპებს AddOutputFilterByType წესის გამოყენებით.

როგორც წესი, სერვერი იყენებს ერთ-ერთ აღწერილ მოდულს, დამოკიდებულია Apache სერვერის ვერსიაზე. როგორც წესი, თქვენ იცით, რომელი მოდული იქნება გამოყენებული. მაგრამ თუ თქვენ შექმნით htaccess-ის ზოგად ფაილს, რომელიც შეიძლება გამოყენებულ იქნას სხვადასხვა სერვერებზე, მაშინ შეგიძლიათ მასში შეიტანოთ წესების ორივე ნაკრები დირექტივის გამოყენებით. . ამ გზით, გამოყენებული იქნება სწორი წესები და შესაძლებელი იქნება 500 შეცდომის წარმოქმნის თავიდან აცილება, თუ კონფიგურაციის ფაილში აღმოჩნდება დეინსტალირებული მოდულების წესები. თქვენ ასევე უნდა გახსოვდეთ, რომ სერვერების განთავსებისას ჰოსტინგზე, რომელიც მხარს უჭერს საიტების დიდ რაოდენობას ერთ პროცესორის ერთეულზე, შეკუმშვა შეიძლება გამორთოთ ისე, რომ არ შეიქმნას დიდი დატვირთვა.

დასკვნა

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

.htaccess(სახელის დასაწყისში წერტილით) არის Apache სერვერის კონფიგურაციის ფაილი, რომელიც საშუალებას გაძლევთ დააკონფიგურიროთ სერვერი ცალკეულ დირექტორიაში (საქაღალდეებში) ძირითადი კონფიგურაციის ფაილზე წვდომის გარეშე (apache/conf/httpd.conf). მაგალითად, დააწესეთ ნებართვები ფაილებისთვის დირექტორიაში, შეცვალეთ ინდექსის ფაილების სახელები, დამოუკიდებლად გაუმკლავდეთ Apache-ს შეცდომებს, ვიზიტორების გადამისამართებით შეცდომის სპეციალურ გვერდებზე. .htaccessარის ჩვეულებრივი ტექსტური დოკუმენტი, რომლის გაფართოება არის htaccess. ეს ფაილი ჩვეულებრივ მდებარეობს საიტის ძირში, მაგრამ თქვენ შეგიძლიათ შექმნათ დამატებითი .htaccess ფაილები თქვენი საიტის სხვადასხვა დირექტორიებისთვის.

Mod_Rewrite- მოდული, რომელსაც იყენებენ ვებ სერვერები URL-ების თარგმნისთვის.

თუ გსურთ დაარეგისტრიროთ mod_rewrite-ით შესრულებული ყველა ოპერაცია, შეგიძლიათ ჩართოთ ეს შემდეგი ჩანაწერით httpd.conf-ში:

RewriteLog /usr/local/apache/logs/mod_rewrite.log RewriteLogLevel 1

Mod_rewrite მოდულის დირექტივები

ყველაზე ხშირად გამოყენებული ვარიანტები

%(REQUEST_URI) მოთხოვნის სტრიქონი (დომენის სახელის და GET პარამეტრების გარეშე), მაგალითად "/server/htaccess/"
%(HTTP_HOST) დომენის სახელი, მაგალითად "max22.ru"
%(QUERY_STRING) GET პარამეტრის სტრიქონი

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

  1. მარტივი გადამისამართება:
    გადამისამართება 301 / http://www.domainname.ru/ ან გადამისამართება /secret http://www.site.ru/nosecret ან # რეგულარული გამოხატვის გამოყენებით RedirectMatch 301 .* http://www.site.ru/? .htaccessან httpd.confაპაჩისთვის. პირველი "/" ნიშნავს, რომ ყველაფერი საიტის ზედა დონიდან, მათ შორის ყველა ქვედირექტორია, გადამისამართდება (არ დაგავიწყდეთ ბოლო "/"-ის დაყენება). თუ გსურთ მხოლოდ გვერდის გადამისამართება, PR-ის დაცვით ძველი გვერდი, შეგიძლიათ გააკეთოთ ეს:

    გადამისამართება 301 /old/old.htm http://www.you.ru/new.htm სადაც:
    /old/old.htm - ძველი გვერდის გზა და სახელი
    http://www.you.com/new.htm - ახალი გზა და გადატანილი გვერდის ახალი სახელი

  2. გადამისამართება ნებისმიერ გვერდზე მომხმარებლის IP-ით ან კონკრეტული გვერდის მოთხოვნისას (ასევე სახელის ნიღბის მიხედვით).
    თუ მომხმარებელს აქვს IP 192.152.37.125, მაშინ ის გადამისამართდება user.php გვერდზე: SetEnvIf REMOTE_ADDR 192.152.37.125 REDIR="redir" RewriteCond %(REDIR) redir RewriteRule. ^/$ /
  3. გადამისამართება გარკვეული ფაილების მოთხოვნისას. თუ მოთხოვნილი იქნება ფაილებისთვის, რომელთა გაფართოება არ არის მითითებული .htaccess ფაილში (gif და jpg), შემდეგ ხდება გადამისამართება: RewriteEngine On RewriteRule !.(gif|jpg)$ index.php
  4. mod_rewrite-ის გამოყენებით:
    Options +FollowSymLinks RewriteEngine on RewriteCond %(HTTP_HOST) ^yourdomain\.ru RewriteRule ^(.*)$ http://www.yourdomain.ru/$1
  5. გადამისამართება რეგულარული გამოსახულებით:
    RedirectMatch 301 (.*) http://www.yourdomain.ru$1 რეგისტრირებულია .htaccess ფაილში. (.*) RedirectMatchრეალურად ემთხვევა რეგულარული გამოხატვის ნიმუშებს დომენის სახელის შემდეგ. აქედან გამომდინარე, თქვენ არ შეგიძლიათ შეესაბამებოდეს ნიმუში ^/yourdomain.ru-ზე. თუმცა, შესაძლებელია გვერდების გადაყვანა .html გაფართოების გამოყენებით იმავე სახელწოდების ფაილებად, მაგრამ .php გაფართოებით: RedirectMatch 301 (.*)\.html$ http://www.yourdomain.ru$1.php თუ თქვენ გსურთ გააკეთოთ განსხვავებული გადამისამართება ცალკეულ გვერდებზე, შეგიძლიათ გამოიყენოთ შემდეგი: RedirectMatch Permanent ^/html/resources.html$ http://www.newdomain.com/resources.php RedirectMatch Permanent ^/html/other_page.html$ http ://www.newdomain.com /other_page.php RedirectMatch მუდმივი ^/(.*)$ http://www.newdomain.com/" მატჩის გადამისამართება მუდმივი" არის "RedirectMatch 301"-ის ექვივალენტი, სტრიქონი "*(Wildcard)" უნდა იყოს ბოლო ამ სიაში.
  6. იკითხებადი URL-ების შექმნა
    მაგალითად, www.site.ru/product.php?id=123 www.site.ru/product/123-ზე გადაყვანა ასე: RewriteEngine RewriteRule-ზე ^product/([^/\.]+)/?$ product .php?id=$1 [L] შემდეგ მაგალითში, ჩვენ გადავიყვანთ www.site.ru/script.php?product=123 www.site.ru/cat/product/123/: RewriteRule cat/(.* )/(. *)/$/script.php?$1=$2
  7. გადამისამართება PHP-ზე:
    header ("HTTP/1.1 301 გადავიდა მუდმივად"); header ("მდებარეობა: http://www.newdomain.ru/newdir/newpage.htm"); exit(); ბუნებრივია, თქვენ უნდა შექმნათ გვერდი, წვდომისას მოხდება გადამისამართება და განათავსეთ იგი სერვერზე. და უმჯობესია მიუთითოთ HTTP/1.1 (ვიდრე HTTP/1.0 ან HTTP/0.9, რომლებსაც არ აქვთ საერთო ჰოსტინგის მხარდაჭერა)
  8. საქაღალდეში არსებული ყველა ფაილის გადამისამართება ერთ ფაილზე.
    მაგალითად, თქვენ აღარ გჭირდებათ სუპერ ფასდაკლების საიტის განყოფილება და გსურთ ყველა მოთხოვნა გადამისამართოთ /superdiscount საქაღალდეში ერთ /hot-offers.php ფაილზე. ამისათვის დაამატეთ შემდეგი კოდი .htaccess-ს. RewriteRule ^superdiscount(.*)$ /hot-offers.php
  9. მთელი საქაღალდის გადამისამართება ერთი ფაილის გარდა
    შემდეგ მაგალითში, ყველა ფაილი /superdiscount საქაღალდეში გადამისამართდება /hot-offers.php გარდა /superdiscount/my-ebook.html, რომელიც უნდა გადამისამართდეს /hot-to-make-million.html RewriteRule ^superdiscount/-ზე. my -ebook.html /hot-to-make-million.html RewriteRule ^superdiscount(.*)$ /hot-offers.php
  10. დინამიური URL ახალ ფაილზე გადამისამართება.
    ეს პარამეტრი სასარგებლოა, თუ გსურთ პარამეტრების მქონე დინამიური URL გადამისამართოთ ახალ სტატიკურ ფაილზე. RewriteRule ^article.jsp?id=(.*)$ /latestnews.htm ანუ, ახლა მოთხოვნა ფაილზე, როგორიცაა http://www.kass.ws/article.jsp?id=8632 და/ან http:/ /www .kass.ws/article.jsp?id=1245 გაიგზავნება ფაილში http://www.kass.ws/latestnews.htm.
  11. ახალი ფაილების მასობრივი გადამისამართება.
    ახლა გადავიდეთ ყველაზე რთულ ნაწილზე, როდესაც გჭირდებათ ბევრი URL-ის გადამისამართება, მაგალითად CMS-ის შეცვლის შემდეგ. აქ დაუყოვნებლივ ჩნდება მთელი რიგი პრობლემები. ჯერ ერთი, ყველა შეცვლილი მისამართის დამატებას .htaccess ფაილში ძალიან დიდი დრო დასჭირდება და თავად დავალება უსიამოვნოა. მეორეც, ძალიან ბევრი ჩანაწერი .htaccess ფაილში შეანელებს Apache სერვერს. და მესამე, ამდენი ინფორმაციის შეყვანისას დიდია ალბათობა იმისა, რომ სადმე შეცდომა დაუშვათ. ამიტომ, საუკეთესო გამოსავალი არის პროგრამისტის დაქირავება, რომელიც დაგიწერთ დინამიურ გადამისამართებას.
    ქვემოთ მოყვანილი მაგალითი დაწერილია PHP-ში, მაგრამ ასევე შეიძლება გაკეთდეს ნებისმიერ ენაზე. დავუშვათ, თქვენ გადაერთეთ ახალი სისტემაბმულები თქვენს საიტზე და ყველა ფაილი, რომელიც მთავრდება ძველი ID-ით, უნდა იყოს შერეული. პირველ რიგში, ჩვენ ვქმნით ცხრილს მონაცემთა ბაზაში, რომელიც შეიცავს ძველ ID-ს და ახალ URL-ს გადამისამართებისთვის. old_id INT new_url VARCHAR (255) შემდეგ დაწერეთ კოდი, რომელიც თქვენს ძველ ID-ს ახალ URL-ებთან დააკავშირებს
    ამის შემდეგ, დაამატეთ შემდეგი ხაზი .htaccess-ს: RewriteRule ^/product-(.*)_(+).php /redirectold.php?productid=$2, შემდეგ შექმენით PHP ფაილი redirectold.php, რომელიც მხარს დაუჭერს 301 გადამისამართებას:

    ახლა ყველა მოთხოვნა თქვენს ძველ URL-ებზე გამოიძახებს redirectold.php, რომელიც იპოვის ახალ URL-ს და დააბრუნებს 301 პასუხს თქვენი ახალი URL-ით.

    გადამისამართებები დროის მიხედვით

    რაც შეეხება ხრიკებს, როგორიცაა დროზე დამოკიდებული შინაარსი, ბევრი ვებმასტერი კვლავ იყენებს CGI სკრიპტებს, რომლებიც გადამისამართდებიან სპეციალურ გვერდებზე. როგორ შეიძლება ამის გაკეთება mod_rewrite-ის საშუალებით?

    არსებობს მრავალი ცვლადი სახელად TIME_xxx გადამისამართების პირობებისთვის. შედარებისთვის სპეციალურ ლექსიკოგრაფიულ ნიმუშებთან ერთად STRING და =STRING შეგვიძლია გავაკეთოთ დროზე დამოკიდებული გადამისამართებები: RewriteEngine RewriteCond-ზე %(TIME_HOUR)%(TIME_MIN) >0700 RewriteCond %(TIME_HOUR)%(TIME_MIN)<1900 RewriteRule ^foo\.html$ foo.day.html RewriteRule ^foo\.html$ foo.night.html

    ეს აბრუნებს foo.day.html-ის შინაარსს, როდესაც ითხოვს URL-ს foo.html 07:00-დან 19:00 საათამდე და დანარჩენ დროს foo.night.html-ის შინაარსს.

  12. ჩვენ თავიდანვე ვხსნით ყველა მოთხოვნას "www."
    RewriteEngine #-ზე აცხადებს, რომ გვინდა გამოვიყენოთ mod_rewrite RewriteCond %(HTTP_HOST) ^www\.(.*) RewriteRule ^/?(.*) http://%1/$1

    ჩვენ ვამოწმებთ დომენის სახელს, თუ ის იწყება www-ით, მაშინ იმუშავებს წესი: „ყველა, http://%1/$1-ზე“. აქ %1 არის ჩვენი დომენი www-ის გარეშე (აღებულია მდგომარეობიდან), ხოლო $1 არის მისამართი (თავად აღებულია წესიდან).

  13. ჩვენ ვხსნით ყველა მოთხოვნას index.php-ის ბოლოს. გადამისამართება გვერდზე index.php-ის გარეშე

    საძიებო სისტემები ცუდად ექცევიან დუბლიკატ გვერდებს. ამის თავიდან ასაცილებლად, თქვენ უნდა წაშალოთ გვერდები, როგორიცაა http://your_domain/ და http://your_domain/index.php

    RewriteCond %(THE_REQUEST) ^.*/index.php RewriteRule ^(.*)index.php$ http://%(HTTP_HOST)/$1

  14. გაფართოების შეცვლა .htmlზე .php
    ზოგჯერ ისეც ხდება, რომ თქვენ გაქვთ სტატიკური ვებსაიტი და გჭირდებათ რაიმე სახის php სკრიპტი მასზე მუშაობისთვის. ამისათვის თქვენ უნდა უთხრათ სერვერს, რომ ეს გვერდი განიხილოს როგორც php ფაილი. AddHandler application/x-httpd-php .html ამ ხრიკის გამოყენება შესაძლებელია ასევე ფაილის სხვა გაფართოებებისთვის: AddHandler application/x-httpd-php .xml AddHandler application/x-httpd-php .asp

უარყოთ წვდომა კონკრეტულ დირექტორიაში

  1. ყველასთვის ყველა ფაილისთვის დირექტორიაში: უარყოფა ყველადან
  2. კონკრეტულ ფაილზე: უარყოფს ყველასგან
  3. მომხმარებლის ip-ით: შეკვეთის უარყოფა, დაშვების უარყოფა ყველა დაშვებიდან 192.152.37.125-დან მხოლოდ 192.152.37.125 IP-ის მქონე მომხმარებელს ექნება წვდომა ამ დირექტორიაში.

    და თუ გსურთ, პირიქით, აიკრძალოთ ინდივიდუალური ip მომხმარებლების წვდომა თქვენს საიტზე, დაწერეთ შემდეგი სტრიქონები:

    შეუკვეთე დაშვება, უარყოს დაშვება ყველასგან უარყო 192.152.37.125 უარყო 123.456.177

  4. დირექტივის ოფციები - ინდექსები - დირექტორიაში შიგთავსის ჩვენების აკრძალვა ინდექსის ფაილის არარსებობის შემთხვევაში. დირექტორია არ არის ნაჩვენები. შემდეგ შეგიძლიათ დაამატოთ შემდეგი ხაზი .htaccess-ში: Options -Indexes ამ შემთხვევაში, დირექტორიაში არსებული ფაილების სიის ნაცვლად, ვიზიტორი მიიღებს HTTP შეცდომას 403 - წვდომა აკრძალულია.
  5. უარყოთ წვდომა ფაილებზე მრავალი ტიპის გაფართოებით
  6. უარყოფს ყველასგან

    *.inc, *.conf და *.cfg გაფართოებებით ფაილებზე წვდომა აკრძალულია. მიუხედავად იმისა, რომ დირექტივა ნაგულისხმევად არ მუშაობს რეგულარულ გამონათქვამებთან, მათი ჩართვა შესაძლებელია დირექტივის ვარიანტებში ტილდის სიმბოლოს (~) ჩასმით. სინტაქსი შემდეგია:

    [tilde] [space] [further_all_without_spaces] ამ წვდომის დასაბლოკად ჩაწერეთ შემდეგი: RewriteRule ^.htaccess$ - [F] ეს წესი ასე ითარგმნება:
    თუ ვინმე ცდილობს .htaccess ფაილზე წვდომას, სისტემამ უნდა შექმნას შეცდომის კოდი "HTTP პასუხი 403" ან "403 აკრძალულია - თქვენ არ გაქვთ /.htaccess წვდომის უფლება ამ სერვერზე".

    ^.htaccess$ კონსტრუქცია ამ რეგულარულ გამონათქვამში ნიშნავს:
    ^ - ხაზის დასაწყისის წამყვანი
    $ - ბოლო ხაზის წამყვანი
    . - რეგულარულ გამონათქვამებში წერტილი "." აღნიშნავს მეტა სიმბოლოს და დაცული უნდა იყოს უკანა ხაზით, თუ მაინც გსურთ გამოიყენოთ ფაქტობრივი პერიოდი.

    ფაილის სახელი ზუსტად უნდა განთავსდეს საწყის და დასასრულს შორის. ეს უზრუნველყოფს, რომ მხოლოდ კონკრეტული ფაილის სახელი და არა სხვა, წარმოქმნის შეცდომის კოდს.
    [F]- სპეციალური "ამკრძალავი" დროშა (აკრძალულია).
    - არ გაითვალისწინოთ ასოების შემთხვევა.
    - ნიშნავს "ან მომდევნო პირობას".

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

კოდირების განსაზღვრა, რომელშიც სერვერი "აძლევს" ფაილებს

AddDefaultCharset windows-1251 პარამეტრები: KOI8-R, UTF-8, Windows-1251

ატვირთული ფაილების კოდირების განსაზღვრა

CharsetSourceEnc windows-1251

დირექტორიაში პაროლის დაყენება .htaccess-ის გამოყენებით

დირექტორიაში პაროლის დასაყენებლად, შეგიძლიათ გამოიყენოთ Apache ვებ სერვერზე მოწოდებული ძირითადი ავტორიზაციის სისტემა. შექმენით .htaccess ფაილი დირექტორიაში, რომელზეც გვსურს შეზღუდოთ წვდომა პაროლით შემდეგი დირექტივებით: AuthType Basic AuthName "Some Name" AuthUserFile /www/some_login/www/htdocs/some_dir/.htpasswd საჭიროებს მომხმარებლის მოქმედ გზას /www. /some_login/ www/htdocs/some_dir/.htpasswd არის პაროლის ფაილის სრული გზა ჩვენი სერვერის დისკზე. თუ, მაგალითად, თქვენ განათავსებთ .htpasswd ფაილს (ის შეიცავს პაროლებს) თქვენს მთავარ დირექტორიაში, სადაც სერვერზე შეხვალთ FTP-ის საშუალებით, მაშინ ამ ფაილის ბილიკი ასე გამოიყურება /www/some_login/www/htdocs/some_dir /.htpasswd , სადაც some_login არის თქვენი შესვლა. AuthUserFile დირექტივაში ვაზუსტებთ ფაილის აბსოლუტურ გზას ლოგინებით/პაროლებით, რომელსაც შევქმნით ცოტა მოგვიანებით. თუ თქვენ ქმნით .htaccess ფაილს თქვენს კომპიუტერში და არა უშუალოდ სერვერზე ტექსტური რედაქტორის გამოყენებით, განსაკუთრებული ყურადღება მიაქციეთ იმ ფაქტს, რომ .htaccess უნდა გადაიცეს FTP-ით მკაცრად ტექსტის (ASCII) რეჟიმში.

შექმენით პაროლის ფაილი. პაროლის ფაილი უნდა შეიცავდეს ხაზებს, როგორიცაა login:password. პაროლი უნდა იყოს დაშიფრული MD5 ალგორითმის გამოყენებით. ასეთი ფაილის შექმნის ერთ-ერთი გზა არის პროგრამის გამოყენება, რომელსაც მოყვება Apache - htpasswd (ჩვენს სერვერზე ის მდებარეობს /usr/local/apache/bin დირექტორიაში, სრული გზაა /usr/local/apache/bin/ htpasswd).

იფიქრეთ იმაზე, თუ როგორ უნდა შექმნათ პაროლის ფაილი unix გარსში პირდაპირ სერვერზე. გადავიდეთ გარსზე და შევასრულებთ შემდეგ ბრძანებებს:

Htpasswd -mbc .htpasswd user1 7B1safkir - შექმენით ახალი .htpasswd ფაილი, რომელშიც დავამატებთ მომხმარებლის user1 ჩანაწერს ბრძანების ხაზზე მითითებული პაროლით. htpasswd .htpasswd user2 - დაამატეთ user2 უკვე არსებულ .htpasswd ფაილს და შეიყვანეთ პაროლი ხელით შესაბამისი პროგრამის მოთხოვნის პასუხად.

ყველა შესვლის დასრულების შემდეგ, ფაილი უნდა აიტვირთოს სერვერზე.

გვერდისთვის პაროლების დაყენების სხვა გზების შესახებ

პერსონალური შეცდომის გვერდების დაყენება

თქვენ შეგიძლიათ დააყენოთ საკუთარი შეცდომის გვერდი შემდეგნაირად: ErrorDocument 404 http://www.site.ru/404.php IE უგულებელყოფს 512 ბაიტზე მცირე ზომის გვერდებს.

დირექტორიებისა და ქვედირექტორიების ინდექსირება

საძიებო სისტემების მიერ დირექტორიებისა და ქვედირექტორიების ინდექსაციის თავიდან ასაცილებლად, თქვენ უნდა დაწეროთ შემდეგი ხაზი, მაგალითად: DirectoryIndex index.php ეს დირექტივა განსაზღვრავს ფაილს, რომელიც გამოიძახება დირექტორიაში წვდომისას ფაილის სახელის მითითების გარეშე.

თქვენ შეგიძლიათ მიუთითოთ მრავალი ინდექსის გვერდი. დირექტორიას მოთხოვნისას, ისინი მოიძებნება იმ თანმიმდევრობით, რომლითაც ისინი ჩამოთვლილია DirectoryIndex დირექტივაში. თუ index.html ფაილი ვერ მოიძებნა, ის მოძებნის index.php ფაილს და ა.შ.

DirectoryIndex index.html index.php index.shtml

პირადად მე მირჩევნია ცარიელი დირექტორიებიდან გადამისამართება ან საიტის მთავარ გვერდზე, ან სხვა შესაფერის გვერდზე. მაგალითად, www.site.ru/pic/ დირექტორია შეიძლება გადამისამართდეს www.site.ru-ზე.

სურათების დაცვა ჩამოტვირთვისგან

ხშირად ხდება, რომ ვებმასტერები უხეშად აკოპირებენ თქვენი საიტის შინაარსს სურათებთან ერთად და სურათები იტვირთება თქვენივე სერვერიდან. ეს ქმნის დამატებით ტრაფიკს, რაც ხშირად იწვევს უამრავ პრობლემას. როგორ დაიცვათ თავი ასეთი ვებმასტერებისგან და არ შეუშალოთ ხელი საძიებო რობოტებს სურათების ინდექსირებაში? ეს მარტივია: RewriteEngine RewriteCond %(HTTP_REFERER)-ზე. RewriteCond %(HTTP_REFERER) !^http://([^.]+\.)?საიტი\. RewriteCond %(HTTP_REFERER) !google\. RewriteCond %(HTTP_REFERER) !search\?q=ქეში RewriteCond %(HTTP_REFERER) !msn\. RewriteCond %(HTTP_REFERER) !yahoo\. RewriteCond %(REQUEST_URI) !^/hotlinker\.gif$ RewriteRule \.(gif|jpg|png)$ /hotlinker.gif hotlinker.gif - გამოსახულება, რომელიც უნდა იყოს ნაჩვენები ნამდვილი სურათების ნაცვლად. გირჩევთ გამოაჩინოთ თქვენი ლოგო და თქვენი საიტის ბმული ამ სურათზე.

კიდევ ერთი ვარიანტი არაავტორიზებული საიტებიდან სურათებზე წვდომის თავიდან ასაცილებლად:

SetEnvIfNoCase Referer "^$" local_ref=1 SetEnvIfNoCase Referer "^http://(www\.)?htmlweb\.ru" local_ref=1 SetEnvIfNoCase Referer "^http://(www\.)?images\.yandex\ .ru" local_ref=1 SetEnvIfNoCase რეფერერი "^http://(www\.)?hghltd\.yandex\.com" local_ref=1 შეუკვეთეთ ნება, უარყოთ დაშვება env=local_ref-დან

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

RewriteCond %(HTTP_USER_AGENT) (Googlebot|Slurp|spider|Twiceler|heritrix| Combine|appie|boitho|e-SocietyRobot|Exabot|Nutch|OmniExplorer| MJ12bot|ZyBorg/1|Ask\ JeevesTheemaist| BecomeBot|Clustered-Search-Bot|MSIECrawler|freefind|galaxy|genieknows|INGRID|grub-client|MojeekBot|NaverBot|NetNose-Crawler|OnetSzukaj|PrassoSunner|Asterias\Crawler|N-DrowTrowSer|N-DrowEUser | \ ბრაუზერი|Girafabot|Indy\ Library|Intelliseek|Zealbot| Windows\ 95|^Mozilla/4\.05\ \$|^Mozilla/4\.0$) RewriteRule ^(.*)$ - [ F] # RewriteCond %(HTTP_USER_AGENT) ^Mozilla.* RewriteCond %(HTTP_USER_AGENT) ^Opera.* RewriteCond %(HTTP_USER_AGENT) ^Firefox.* RewriteCond %(HTTP_USER_AGENT) ^Netscape.* RewriteRule ^Netscape.* RewriteRule ^. *)$ - [F]

Robots.txt ფაილზე ჰიტების თვალყურის დევნება

საძიებო სისტემებში ვიზიტების შესახებ მეტი ინფორმაციის მისაღებად, სასარგებლოა დეტალური ინფორმაცია robots.txt ფაილზე წვდომის შესახებ. ამის ორგანიზების მიზნით, შემდეგი ჩანაწერები უნდა იყოს ".htaccess"-ში: RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteRule ^robots.txt$ / robot.php?%(REQUEST_URI) ახლა, "robots.txt" ფაილის მოთხოვნისას, ჩვენი RewriteRule გადამისამართებს ვიზიტორს (რობოტს) მოთხოვნის დამუშავების robot.php სკრიპტზე. გარდა ამისა, ცვლადი გადაეცემა სკრიპტს, რომელიც დამუშავდება თქვენი საჭიროების მიხედვით. "REQUEST_URI" განსაზღვრავს მოთხოვნილი ფაილის სახელს. ამ მაგალითში ეს არის "robots.txt". სკრიპტი წაიკითხავს "robots.txt"-ის შინაარსს და გაუგზავნის მას ბრაუზერში ან საძიებო სისტემის რობოტში. ამრიგად, ჩვენ შეგვიძლია დავთვალოთ ვიზიტორების ჰიტები და შევინახოთ ჟურნალის ფაილები.

PHPSESSID

URL-ზე PHPSESSID-ის დამატების გამოსართავად, ჩადეთ index.php-ის დასაწყისში:

Ini_set("session.use_trans_sid", 0);

ან დაწერეთ .htaccess-ში:

php_flag session.use_trans_sid გამორთულია

თუ ეს ყველაფერი რთულად მოგეჩვენათ, გამოიყენეთ მზა სერვისი დინამიური URL-ების სტატიკურზე გადასაყვანად htaccess-ის გამოყენებით

დირექტივების ქეშირება

ყველა ტიპის ფაილის ქეშირება წვდომის დროის მიხედვით ExpiresActive on ExpiresDefault "წვდომა პლუს 600 წამი" ქეშირება ყველა ტიპის ფაილისთვის მოდიფიკაციის დროის მიხედვით ExpiresActive on ExpiresDefault "modification plus 600 seconds" ქეშირება ფაილის გარკვეული ტიპებისთვის ExpiresByType text/css "modificationT plusy"6 image/jpeg "modification plus 600 seconds" ExpiresByType image/gif "modification plus 600 seconds" ExpiresByType image/x-ico "modification plus 600 seconds" ExpiresByType image/png "modification plus 600 seconds"

ქეშირების გამორთვა Apache სერვერით

გახსენით Apache სერვერის კონფიგურაციის ფაილი httpd.confდა გააუქმეთ შემდეგი სტრიქონები:

LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c

შეიყვანეთ შემდეგი .htaccess-ში:

# გამორთეთ ქეშირება ამ საქაღალდეში # Modules ჩართული უნდა იყოს # mod_headers.c and mod_expires.c # # Cache-Control header Header-ის დამატება Cache-Control "no-store, no-cache, must-revalidate"# იწურება სათაური ExpiresActive On ExpiresDefault "ახლა"

საჭირო ჰედერები ავტომატურად გადაიცემა და არ არის საჭირო მათი სპეციალურად ჩაწერა PHP-ში - ქეში უკვე გამორთულია!

ქეში-კონტროლი http სათაურის აღწერა

ქეშირება .htaccess ფაილით

# ქეშირების ჩართვა ამ საქაღალდეში # მოდულები უნდა იყოს ჩართული # mod_headers.c და mod_expires.c # ExpiresActive on #ExpiresDefault "წვდომა პლუს 1 საათი" #ExpiresDefault "წვდომა პლუს 10 წელი" ExpiresDefault "წვდომა პლუს 1 თვე" ExpiresByType ტექსტი/ქეში-მანიფესტი "წვდომა პლუს 0 წამი" ExpiresByType text/html "წვდომა პლუს 1 თვე" xml "წვდომა პლუს 0 წამი" ExpiresByType აპლიკაცია/xml "წვდომა პლუს 0 წამი" ExpiresByType აპლიკაცია/json "წვდომა პლუს 0 წამი" ExpiresByType აპლიკაცია/rss+xml "წვდომა პლუს 1 თვე" ExpiresByType სურათი/x-ხატი "წვდომა პლუს 1 კვირა" " ExpiresByType image/gif "წვდომა პლუს 1 წელი" ExpiresByType image/png "წვდომა პლუს 1 წელი" ExpiresByType image/jpg "წვდომა პლუს 1 წელი" ExpiresByType image/jpeg "წვდომა პლუს 1 წელი" ExpiresByType ვიდეო/ogg პლუს 1 წელი " ExpiresByType აუდიო/ogg "წვდომა პლუს 1 წელი" ExpiresByType აუდიო/mp3 "წვდომა პლუს 1 წელი" ExpiresByType ვიდეო/mp4 "წვდომა პლუს 1 წელი" ExpiresByType ვიდეო/ვებ. 1 თვე" ExpiresByType შრიფტი/truetype "წვდომა პლუს 1 წელი" ExpiresByType შრიფტი/opentype "წვდომა პლუს 1 წელი" ExpiresByType განაცხადი/x-font-woff "წვდომა პლუს 1 წელი" ExpiresByType სურათი/svg+xml "წვდომა პლუს 1 თვე" ExpiresByType განაცხადი/vnd.ms-fontobject plus1 "access წელი" ExpiresByType ტექსტი/css "წვდომა პლუს 2 თვე" ExpiresByType აპლიკაცია/javascript "წვდომა პლუს 2 თვე" ExpiresByType ტექსტი/javascript "წვდომა პლუს 2 თვე" ჰედერის დამატება Cache-Control "public"

javascript ფაილების ქეშირება .htaccess ფაილით

Expires ნაგულისხმევი "წვდომა პლუს 3 დღე"

ფრთხილად იყავით ქეშირებისას ფაილის შეცვლისას მომხმარებელს შეუძლია მიიღოს ახალი ვერსია მხოლოდ 3 დღის შემდეგ!

როგორ მოვახდინოთ html გვერდების დამუშავება php კოდით?

ჩაწერეთ შემდეგი სტრიქონები თქვენს .htaccess ფაილში: RemoveHandler .php .htm .html AddHandler application/x-httpd-php .php .htm .html

როგორ განვათავსოთ მრავალი საიტი ერთ საერთო ჰოსტინგზე?

იმისათვის, რომ მოათავსოთ ორი ან მეტი საიტი ერთ ვირტუალურ ჰოსტინგზე, სატარიფო გეგმის მიერ თქვენთვის მინიჭებული დომენების რაოდენობის საწინააღმდეგოდ, თქვენ უნდა ჩაწეროთ შემდეგი სტრიქონები ".htaccess" ფაილში:

RewriteEngine On RewriteRule ^newdirectory/ - [L] RewriteCond %(HTTP_HOST) (www.)?newdomain.ru RewriteRule (.*) newdirectory/$1 [L]

სად:
newdirectory/ - საქაღალდე, სადაც განთავსდება მეორე საიტი
newdomain.ru - დომენი, რომლისთვისაც ჩვენ გადამისამართდებით

გთხოვთ გაითვალისწინოთ, რომ ამ შემთხვევაში თქვენ გექნებათ ერთი ფოსტის ანგარიში. იმათ. თუ გაქვთ ყუთი [ელფოსტა დაცულია], შემდეგ newdomain.ru დომენის დაკავშირების შემდეგ საფოსტო ყუთი [ელფოსტა დაცულია]გამოჩნდება მეორე სახელი [ელფოსტა დაცულია]და ნებისმიერი ახალი საფოსტო ყუთის შექმნისას (მაგალითად, ინფორმაცია), მას ავტომატურად ენიჭება ორი სახელი - [ელფოსტა დაცულია]და [ელფოსტა დაცულია]

გვერდების ძიება ერთზე მეტ დირექტორიაში

ზოგჯერ საჭიროა, რომ ვებ სერვერმა მოძებნოს გვერდები ერთზე მეტ დირექტორიაში.

RewriteEngine-ზე # ჯერ სცადეთ იპოვოთ იგი მითითებულ ადგილას/... # ...და თუ იპოვეთ, დაასრულეთ ძებნა: RewriteCond /your/docroot/dir1/%(REQUEST_FILENAME) -f RewriteRule ^(.+) /თქვენი / docroot/dir1/$1 [L] # წამი - სცადეთ იპოვოთ ის პაბში/... # ...და თუ იპოვეთ, დაასრულეთ ძებნა: RewriteCond /your/docroot/dir2/%(REQUEST_FILENAME) -f RewriteRule ^ ( .+) /your/docroot/dir2/$1 [L] # წინააღმდეგ შემთხვევაში გააგრძელეთ სხვა დირექტივებისთვის RewriteRule ^(.+) -

მომხმარებლის ვირტუალური მასპინძლები

თუ გსურთ მოგვაწოდოთ www.subdomain.domain.ru მისამართები მომხმარებლის გვერდებისთვის, შეგიძლიათ გამოიყენოთ წესების შემდეგი ნაკრები http://www.subdomain.domain.ru/path გადაიყვანეთ შიდა გზაზე /home/subdomain/path. :

RewriteEngine RewriteCond %(HTTP_HOST) ^www\.[^.]+\.ru$ RewriteRule ^(.+) %(HTTP_HOST)$1 [C] RewriteRule ^www\.([^.]+)\.ru( .*) /სახლი/$1$2

ფაილები ზიანდება სერვერზე ატვირთვისას

თუ ფაილების ფორმებით გადატანისას (მითითებული enctype="multipart/form-data") ბინარული მონაცემები დაზიანებულია, ჩაწერეთ დირექტივა /cgi-bin/.htaccess: CharsetRecodeMultipartForms Off.

შეცდომა SWF ფაილების ჩატვირთვისას.
შეცდომები საკვანძო სიტყვების შემცველ გვერდებზე წვდომისას,
ტიპის $_REQUEST

ეს შეიძლება გამოწვეული იყოს დამონტაჟებული მოდულით. Apache-ში. ნაგულისხმევად, ის ბლოკავს ხაზებს SQL არგუმენტებით და სხვა პოტენციურად საშიში ბრძანებებით შეკითხვებში.

შესაძლო შეცდომის შეტყობინებები:

Აკრძალული

თქვენ არ გაქვთ ამ სერვერზე /adm/index.php წვდომის ნებართვა. გარდა ამისა, მოთხოვნის დასამუშავებლად ErrorDocument-ის გამოყენებისას წარმოიშვა შეცდომა 404 Not Found.

მოთხოვნა არ არის დაცული და უარყოფილია.

დაამატეთ .htaccess-ში SecFilterEngine გამორთულია SecFilterScanPOST გამორთულიაშეტყობინებისთვის:

"POST /wp-admin/async-upload.php HTTP/1.1" 406 354 "-" "Shockwave Flash"

თქვენ შეგიძლიათ ამოიღოთ დაცვა მხოლოდ ფაილების სერვერზე ატვირთვისთვის: SecFilterEngine გამორთულია SecFilterScanPOST გამორთულია

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

სერვერის ცვლადები

ეს არის ფორმის ცვლადები %(NAME_OF_VARIABLE)

სადაც NAME_OF_VARIABLEშეიძლება იყოს სტრიქონი აღებული შემდეგი სიიდან:

ეს ცვლადები ზუსტად შეესაბამება ანალოგიურად დასახელებულ HTTP MIME სათაურებს და Apache სერვერის ცვლადებს ან აწყობენ tm ველებს Unix სისტემებზე. ის, რაც განსაკუთრებულია mod_rewrite-ისთვის, მოიცავს:

IS_SUBREQ- შეიცავს ტექსტს "true", თუ მოთხოვნა ამჟამად სრულდება ქვემოთხოვნის სახით, წინააღმდეგ შემთხვევაში "false". ქვემოთხოვნები შეიძლება გენერირებული იყოს მოდულებით, რომლებიც საჭიროებენ დამატებით ფაილებს ან URI-ებს, რათა შეასრულონ საკუთარი ამოცანები.

API_VERSION- ეს არის Apache მოდულის API-ის ვერსია (შიდა ინტერფეისი სერვერსა და მოდულს შორის) სერვერის მიმდინარე build-ში, როგორც განსაზღვრულია include/ap_mmn.h-ში. მოდულის API ვერსია ემთხვევა გამოყენებული Apache-ს ვერსიას (მაგალითად, Apache ვერსიისთვის 1.3.14, ეს არის 19990320:10), მაგრამ ეს ძირითადად აინტერესებს მოდულის ავტორებს.

ᲗᲮᲝᲕᲜᲐ- ბრაუზერის მიერ სერვერზე გაგზავნილი სრული HTTP მოთხოვნის სტრიქონი (მაგ., " GET /index.html HTTP/1.1"). ის არ შეიცავს ბრაუზერის მიერ გამოგზავნილ დამატებით სათაურებს.

REQUEST_URI- HTTP მოთხოვნის სტრიქონში მოთხოვნილი რესურსი.

REQUEST_FILENAME- სრული გზა სერვერის ფაილურ სისტემაში ამ მოთხოვნის შესაბამისი ფაილის ან სკრიპტისკენ.

შენიშვნები:

  1. SCRIPT_FILENAME და REQUEST_FILENAME ცვლადები შეიცავს ერთსა და იმავე მნიშვნელობას, ანუ Apache-ს შიდა request_rec სტრუქტურის ფაილის სახელის ველის მნიშვნელობას. პირველი სახელი არის მხოლოდ კარგად ცნობილი CGI ცვლადის სახელი, ხოლო მეორე არის REQUEST_URI-ის მუდმივი ასლი (შეიცავს request_rec სტრუქტურის uri ველის მნიშვნელობას).
  2. არსებობს სპეციალური ფორმატი: %(ENV:ცვლადი) სადაც ცვლადიშეიძლება იყოს ნებისმიერი გარემოს ცვლადი. ეს არის მოძიებული შიდა Apache-ში და (თუ იქ არ არის) getenv()-ის გამოძახებით Apache სერვერის პროცესიდან.
  3. არის სპეციალური ფორმატი: %(HTTP:header) სადაც სათაურიშეიძლება იყოს ნებისმიერი HTTP MIME სათაურის სახელი. ეს მოძებნილია HTTP მოთხოვნაში. მაგალითი: %(HTTP:Proxy-Connection) HTTP სათაურის მნიშვნელობა " Proxy-Connection: ".
  4. არსებობს სპეციალური ფორმატი %(LA-U:ცვლადი) წინასწარი მოთხოვნებისთვის, რომლებიც შესრულებულია შიდა (URL-ზე დაფუძნებული) ქვემოთხოვნით საბოლოო მნიშვნელობის დასადგენად. ცვლადი. გამოიყენეთ ეს, როდესაც გსურთ გამოიყენოთ ცვლადი ტრანსფორმაციებისთვის, რომელიც რეალურად არის განსაზღვრული მოგვიანებით API-ს ზოგიერთ ფაზაში და, შესაბამისად, მიუწვდომელია ამ ეტაპზე. მაგალითად, როდესაც გსურთ კონვერტაცია REMOTE_USER ცვლადის მიხედვით სერვერის კონტექსტიდან (httpd.conf ფაილი), თქვენ უნდა გამოიყენოთ %(LA-U:REMOTE_USER), რადგან ეს ცვლადი დაყენებულია ავტორიზაციის ეტაპებზე, რომლებიც მიდიან. შემდეგ URL-ის თარგმნის ეტაპი, რომელშიც mod_rewrite მუშაობს. მეორეს მხრივ, mod_rewrite-ის განხორციელების გამო დირექტორიაში (.htaccess ფაილი) API-ის Fixup ფაზის მეშვეობით, და რადგან ავტორიზაციის ფაზები ამ ფაზამდეა, შეგიძლიათ უბრალოდ გამოიყენოთ %(REMOTE_USER) იქ.
  5. არსებობს სპეციალური ფორმატი: %(LA-F:ცვლადი), რომელიც ქმნის შიდა (ფაილის სახელზე დაფუძნებულ) ქვემოთხოვნას საბოლოო მნიშვნელობის დასადგენად. ცვლადი. ეს ძირითადად იგივეა, რაც ზემოთ LA-U ფორმატში.

მთავარი გვერდი დუბლირების გარეშე

ჩვეულებრივ, მთავარი გვერდის კოდი ფიზიკურად მდებარეობს index.html ან index.php ფაილში, მაგრამ საიტი უნდა გაიხსნას ნებისმიერ მოთხოვნაზე: yoursite.ru, yoursite.ru/index.html, www.yoursite.ru და www. .yoursite.ru/index .html მაგრამ საძიებო სისტემებისთვის ეს არის ოთხი განსხვავებული URL! თუ თქვენ არ დააყენეთ .htaccess სწორად, საძიებო სისტემა თავის ინდექსს დაამატებს ოთხ იდენტურ გვერდს. ეს ცუდი საიტის ნიშანია. ამ პრობლემის თავიდან აცილება შეგიძლიათ შემდეგი კოდით .htaccess-ში:

ოფციები +FollowSymLinks RewriteEngine on RewriteCond %(HTTP_HOST) ^yoursite.ru RewriteRule (.*) http://www.yoursite.ru/$1 RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://www.yoursite.ru/

ყველა დუბლიკატი გვერდი იქნება დამაგრებული გადამისამართებით, კოდით მთავარ გვერდზე - http://www.yoursite.ru/.

გვერდების დუბლიკატი URL-ის ბოლოს დახრილობის გარეშე

www.yoursite.ru/about და www.yoursite.ru/about/ გვერდების ინდექსაციის თავიდან ასაცილებლად, ჩადეთ შემდეგი კოდი:

გვერდები დახრილობის გარეშე გადამისამართდება „სლეშზე“.

RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*)$ /$1/

ფაილების შენახვა (ჩატვირთვა) გახსნის ნაცვლად

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

AddType application/octet-stream .rar .doc .mov .avi .pdf .xls .mp4

გაგზავნილი გვერდების შეკუმშვა

SetOutputFilter DEFLATE Header unset ETag FileETag None

იძულებითი უკანა ხაზი

შემდეგი კოდი ყოველთვის დაამატებს ხაზს თქვენი საიტის URL-ს, რაც ბევრს ეხმარება საიტის SEO ზონაში.

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/

შრიფტების ჯვარედინი დომენური გამოყენება FireFox-ისთვის

ჩაშენებული შრიფტების გამოყენებისას Firefox არ გაძლევთ საშუალებას აიღოთ ისინი გარე საიტებიდან. .htaccess ფაილის შემდეგი კოდი გადალახავს ამ შეზღუდვას.

#Replace yourdomain.com თქვენი ბლოგის URL Header კომპლექტით Access-Control-Allow-Origin "http://yourdomain.com"

შეასრულეთ PHP JavaScript ფაილებში

JavaScript კოდის შემუშავებისას, ზოგჯერ საჭიროა PHP-ის გამოყენება .js ფაილებში, მაგალითად მონაცემთა ბაზიდან ინფორმაციის მისაღებად.

AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js SetHandler აპლიკაცია/x-httpd-php

დაშალეთ robots.txt, sitemap.xml და ა.შ. ფაილები. დომენის საქაღალდეებში

# თუ არის მოთხოვნილი ფაილი საიტის root-დან, დომენის საქაღალდეში, შემდეგ გადამისამართეთ იქ RewriteCond %(DOCUMENT_ROOT)/domain/%(HTTP_HOST)/root%(REQUEST_URI) -f RewriteRule ^(.*)$ /domain /%(HTTP_HOST )/root/$1[L]

მომხმარებლის აგენტების დაბლოკვა .htaccess-ის საშუალებით

თუ თქვენ გაქვთ პრობლემა, რომ ზოგიერთი ტიპის მომხმარებლის აგენტი იტვირთება თქვენს სერვერზე არასაჭირო მოთხოვნებით, მაშინ შეგიძლიათ თავიდან აიცილოთ ისინი .htaccess-ში შემდეგი ხაზების დამატებით:

SetEnvIfNoCase User-Agent "^Black Hole" bad_bot SetEnvIfNoCase User-Agent "^Titan" bad_bot SetEnvIfNoCase მომხმარებლის-აგენტი "^WebStripper" bad_bot SetEnvIfNoCase User-Agent "^NetMechanicENuckerryAgent"^NetMechanicEnBudfAgent "^EmailCollector" bad_bot SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot SetEnvIfNoCase User-Agent "^WebBandit" bad_bot SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot SetEnvIfNoCase" bad_bot SetEnvIfNoCase" bad_bot SetEnvIfNoCase User-Agent "^Crescent" bad_bot SetEnvIfNoCase User-Agent "^Wget" bad_bot SetEnvIfNoCase მომხმარებლის-აგენტი "^SiteSnagger" bad_bot SetEnvIfNoCase User-Agent "^ProWebWalkerEChickAbot"NoBoWebWalker" bad_Ibot. ^Teleport" bad_bot SetEnvIfNoCase User-Agent "^TeleportPro" bad_bot SetEnvIfNoCase User-Agent "^MIIxpc" bad_bot SetEnvIfNoCase User-Agent "^Telesoft" bad_bot SetEnvIfNoCase User-Agentester "^" bad_bot SetEnvIfNoCase User-Agent "^WebZip" bad_bot SetEnvIfNoCase User-Agent "^moget/2.1" bad_bot SetEnvIfNoCase User-Agent "^WebZip/4.0" bad_bot SetEnvIfNoCase SetEnvIfNoCase SetEnvIfNoCase SetEnvIfNoCase User-SaugerE"^n SetEnvIfNoCase User-Agent "^NetAnts" bad_bot SetEnvIfNoCase User-Agent "^Mister PiX" bad_bot SetEnvIfNoCase User-Agent "^WebAuto" bad_bot SetEnvIfNoCase User-Agent "^TheNomad"EWWEBot SetEnvIfNoCase User-Agent "^RMA" bad_bot SetEnvIfNoCase User-Agent "^libWeb/clsHTTP" bad_bot SetEnvIfNoCase User-Agent "^asterias" bad_bot SetEnvIfNoCase User-Agent "^httpetlib"Na User-Agent "^httpetlib"EvIfNoCase "User-Agent" აგენტი "^spanner" bad_bot SetEnvIfNoCase User-Agent "^InfoNaviRobot" bad_bot SetEnvIfNoCase User-Agent "^Harvest/1.5" bad_bot SetEnvIfNoCase User-Agent "^Bullseye/1.0" bad_bot-Agent "^Bullseye/1.0" bad_fNopat Set Ხარის თვალები; Windows 95)" bad_bot SetEnvIfNoCase User-Agent "^Crescent Internet ToolPak HTTP OLE Control v.1.0" bad_bot SetEnvIfNoCase User-Agent "^CherryPickerSE/1.0" bad_bot SetEnvIfNoCase SetEnvIfNoCase "User-Picker-Agent"_^Cher WebBandit/3.50" bad_bot SetEnvIfNoCase User-Agent "^NICErsPRO" bad_bot SetEnvIfNoCase User-Agent "^Microsoft URL Control - 5.01.4511" bad_bot SetEnvIfNoCase User-Agent "^Ditto_Nobotase SetEnvIfNoCase" აგენტი "^WebmasterWorldForumBot" bad_bot SetEnvIfNoCase User-Agent "^SpankBot" bad_bot SetEnvIfNoCase მომხმარებლის-აგენტი "^BotALot" bad_bot SetEnvIfNoCase მომხმარებლის-აგენტი "^lwp-trivial/1. 34" bad_bot SetEnvIfNoCase User-Agent "^lwp-trivial" bad_bot SetEnvIfNoCase User-Agent "^Wget/1.6" bad_bot SetEnvIfNoCase User-Agent "^BunnySlippers" bad_bot SetEnvIfNoCase. მომხმარებლის აგენტი "^URLy გაფრთხილება" bad_bot SetEnvIfNoCase User-Agent "^Wget/1.5.3" bad_bot SetEnvIfNoCase User-Agent "^LinkWalker" bad_bot SetEnvIfNoCase User-Agent "^cosmos" bad_gent "NoCbotasefSet" მომხმარებლის აგენტი "^hloader" bad_bot SetEnvIfNoCase მომხმარებლის აგენტი "^humanlinks" bad_bot SetEnvIfNoCase მომხმარებლის აგენტი "^LinkextractorPro" bad_bot SetEnvIfNoCase მომხმარებელი-აგენტი "^Offline Explorer" bad_bot User-Agentase "^LexiBot" bad_bot SetEnvIfNoCase User-Agent "^Web Image Collector" bad_bot SetEnvIfNoCase User-Agent "^The Intraformant" bad_bot SetEnvIfNoCase User-Agent "^True_Robot/1.0" bad_bot SetEnvIfNoCase SetEnvIfNoCase "^ BlowFi sh/1.0" bad_bot SetEnvIfNoCase User-Agent "^JennyBot" bad_bot SetEnvIfNoCase SetEnvIfNoCase SetEnvIfNoCase SetEnvIfNoCase მომხმარებლის აგენტი "^MIIxpc/4.2" bad_bot SetEnvIfNoCase User-Agent "^BuiltBotTough" bad_fgent "NoC1BotTough" bad_fgent "NoC1BotTough. ^BackDoorBot/1.0" bad_bot SetEnvIfNoCase მომხმარებლის-აგენტი "^toCrawl/UrlDispatcher" bad_bot SetEnvIfNoCase მომხმარებლის-აგენტი "^WebEnhancer" bad_bot SetEnvIfNoCase User-Agent "^Tight_vIfNoCase User-Agent "^Tight_vIfNoCase User-Agent "^Tight_vIfNoCase User-Agent "^Tight_vIfNoCase Set. VCI WebViewer VCI WebViewer Win32" bad_bot SetEnvIfNoCase User-Agent "^VCI" bad_bot SetEnvIfNoCase S User-Agent "^Szukacz/1.4" bad_bot SetEnvIfNoCase User-Agent "^QueryN Metasearch data "^QueryN Metasearch data "^QueryN Metasearch data "^QueryN Metasearch. -აგენტი "^Openfind" bad_bot SetEnvIfNoCase User-Agent "^Xenu"s Link Sleuth 1.1c" bad_bot SetEnvIfNoCase User-Agent "^Xenu"s" bad_bot SetEnvIfNoCase User-Agent "^Zeus"EnvIfNoCase & Tackle/v1.01"b ad_bot SetEnvIfNoCase User-Agent "^RepoMonkey" bad_bot SetEnvIfNoCase User-Agent "^Zeus 32297 Webster Pro V2.9 Win32" bad_bot SetEnvIfNoCase User-Agent "^Webster Pro" bad_bot "NoCEnvAgent" bad_bot "NoCEnvAgent ^LinkScan/8.1a Unix" bad_bot SetEnvIfNoCase მომხმარებლის აგენტი "^Keyword Density/0.9" bad_bot SetEnvIfNoCase User-Agent "^Kenjin Spider" bad_bot SetEnvIfNoCase User-Agent "^Cegbfeieh" bad_bot შეუკვეთეთ Allow, Deny Allow ყველასგან Deny from env=bad_bot

გადამისამართება ენის მიხედვით

RewriteEngine on RewriteCond %(HTTP:Accept-Language) (ru) RewriteRule .* WHERE [L]

სურათების დაცვა სხვა საიტებზე ბმულების საშუალებით ჩამოტვირთვისგან

მათ შორის გადასვლები REFERER-ის გარეშე, ე.ი. როდესაც მისამართი მითითებულია ბრაუზერის ხაზში.

RewriteEngine RewriteCond %(HTTP_REFERER) !^$ RewriteCond %(HTTP_REFERER) !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ SEND_WHERE

RewriteEngine on RewriteCond %(HTTP_REFERER) !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ SEND_WHERE

დაბლოკეთ მომხმარებლები კონკრეტული რეფერერით

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

RewriteEngine RewriteCond %(HTTP_REFERER) bannedurl1.com RewriteCond %(HTTP_REFERER) bannedurl2.com RewriteRule .* - [F]

bannedurl1.com და bannedurl2.com არის აკრძალული საიტების მაგალითები.

PHP ატვირთვის ფაილის ზომის ლიმიტი, მოთხოვნის მაქსიმალური ზომა და სკრიპტის შესრულების მაქსიმალური დრო

ატვირთული ფაილის ზომა:

php_value upload_max_filesize 15M

PHP-ში ატვირთვის მოთხოვნის მაქსიმალური ზომა:

php_value post_max_size 10M

სკრიპტის შესრულების დრო:

php_value max_execution_time 240

დრო სკრიპტმა გააანალიზოს შეყვანილი მონაცემები:

php_value max_input_time 180

მიუთითეთ გამომავალი რეჟიმი IE-სთვის

X-UA-თავსებადი სათაურის დაყენება:

სათაურის ნაკრები X-UA-თავსებადი "IE=Edge"

Setting Vary: Accept-Encoding

საძიებო სისტემის ოპტიმიზაციისა და გვერდის დატვირთვის დროის შესამცირებლად, Google გირჩევთ დააყენოთ სათაური Vary: Accept-Encoding

HTTP/1.1 Vary პასუხის სათაური საშუალებას აძლევს სერვერს მიუთითოს, რომ ქეშირებული რესურსის გამოყენება შესაძლებელია მხოლოდ ვალიდაციის გარეშე, თუ Vary-ში მითითებული სათაურები ემთხვევა მოთხოვნის სათაურებს. მნიშვნელობები: Accept-Encoding, Host, User-Agent, Accept-Language.

Header დამატება Vary: Accept-Encoding

საერთო გამოსახულების ფაილი ყველა დომენისთვის (გლობალური მეტსახელები)

მეტსახელი /javascripts /usr/share/javascript/ ოფციები FollowSymLinksMultiViewsგანათავსეთ საერთო ფაილი, როგორიცაა icon.png /usr/share/javascript/ დირექტორიაში /etc/javascript-common/javascript-common.conf ფაილში და დაამატეთ ხაზი: Alias ​​/apple-touch-icon-precomposed.png / usr/ share/javascript/icon.png

.doc ჩამოტვირთვისას .docx ფაილები იხსნება ბრაუზერში გაუგებარი კოდირებით

თუ თქვენ ხსნით .doc, .docx ფაილებს ბრაუზერში გაუგებარი კოდირებით და გსურთ, რომ ფაილი შეინახოს და არ გაიხსნას მარცხნივ დაწკაპუნებისას, მაშინ უნდა ჩაწეროთ .htaccess:

AddType აპლიკაცია/დოკუმენტის იძულებითი ჩამოტვირთვა AddType აპლიკაცია/დოკუმენტის იძულებითი ჩამოტვირთვა

გადამისამართება უსაფრთხო https კავშირზე

თუ იყენებთ https-ს და გსურთ, რომ ყველა მომხმარებელი გადამისამართდეს მასზე, მაშინ შემდეგი კოდი დაგეხმარებათ:

RewriteEngine On RewriteCond %(HTTPS) !RewriteRule-ზე (.*) https://%(HTTP_HOST)%(REQUEST_URI)

წვდომა, თუ ქუქი-ფაილი დაყენებულია htaccess-ის გამოყენებით

თუ თქვენი შესვლა არის საიტის ადმინისტრატორზე და ის დაყენებულია ქუქი-ფაილში სახელად შესვლა, თქვენ შეგიძლიათ მარტივად დაბლოკოთ წვდომა ნებისმიერ დირექტორიაში აუტსაიდერებისთვის. ამისათვის შექმენით .htaccess ფაილი ამ დირექტორიაში (საქაღალდეში) შემდეგი შინაარსით:

RewriteEngine On RewriteCond %(HTTP_COOKIE) !login=admin RewriteRule .* http://%(HTTP_HOST)/

ამავე პრინციპით, თქვენ შეგიძლიათ დახუროთ საიტი ყველასთვის, ადმინისტრატორის გარდა.

წვდომა "If-Modified-Since" და "If-None-Match" სათაურებზე http 304 პასუხის განსახორციელებლად

თუ PHP არ არის დაინსტალირებული, როგორც Apache მოდული, მაშინ "If-Modified-Since" და "If-None-Match" სათაურებზე წვდომისთვის, თქვენ უნდა განათავსოთ შემდეგი .htaccess ფაილი ვებსაიტის root დირექტორიაში:

RewriteEngine On RewriteRule .* - RewriteRule .* -

ამის შემდეგ, საჭირო სათაურები ხელმისაწვდომი იქნება როგორც $_SERVER["HTTP_IF_MODIFIED_SINCE"] და $_SERVER["HTTP_IF_NONE_MATCH"].

უნდა აღინიშნოს, რომ სათაურები "If-Modified-Since" და "If-None-Match" არ იგზავნება ბრაუზერის მიერ, თუ წინა მოთხოვნებში ამ გვერდზე მას არ მიუღია სათაური "Last-Modified" საპასუხოდ. ვებ სერვერი. გარდა ამისა, ვებ აპლიკაციაში ნაგულისხმევი პარამეტრებით სესიების გამოყენებისას, მითითებული სათაურები ასევე არ გაიგზავნება ბრაუზერის მიერ. ბრაუზერის ასეთი ქცევის თავიდან აცილების მიზნით, სესიის დაწყებამდე აუცილებელია შესრულდეს session_cache_limiter ფუნქცია, არგუმენტად გადავიტანოთ პარამეტრი "private_no_expire":

session_cache_limiter("პირადი_არა_ვადის გასვლის"); session_start();

გარდა ამისა, დამატებითი ინფორმაცია თემაზე შეგიძლიათ იხილოთ:

www.egoroff.spb.ru - გადამისამართების მაგალითები
htaccess.net.ru - დამატებითი ინფორმაცია htaccess-ის შესახებ.

"1C-Bitrix: საიტის მენეჯმენტი" მუშაობს ნებისმიერი დონის უფლებებით, რაც თქვენ მას მიუთითეთ დაყენების (ინსტალაციის) დროს.

იმისათვის, რომ პროდუქტმა სწორად იმუშაოს საქაღალდეებთან და მითითებულ ფაილებთან CHMOD(დაწერა და შექმნა), თქვენ უნდა დააყენოთ ფაილში / ბიტრიქსი/php_ინტერფეისი/dbconn.phpშემდეგი მუდმივები:

ეს არის ტიპიური ნებართვის პარამეტრები უმეტეს ჰოსტინგებზე ( 0644 - ფაილებისთვის, 0755 - საქაღალდეებისთვის). თუ თქვენ გაქვთ რაიმე პრობლემა თქვენს სამუშაოსთან დაკავშირებით, გთხოვთ დაუკავშირდეთ ტექნიკური მხარდაჭერათქვენი ჰოსტინგი.

თქვენ შეგიძლიათ დამოუკიდებლად დააყენოთ უფლებების საჭირო დონე ბრძანების გამოყენებით CHMODკონსოლის რეჟიმში.

შემდეგი ზარი ადგენს ნებართვის დონეს როგორც ფაილებისთვის, ასევე საქაღალდეებისთვის:

თქვენ შეგიძლიათ გამოიყენოთ შემდეგი სინტაქსი საქაღალდეებზე ნებართვების ცალკე დასაყენებლად:

იპოვე. - ტიპი d - exec chmod 0755 () ";"

თუ თქვენ გჭირდებათ სხვადასხვა ნებართვების დაყენება საქაღალდეებისა და ფაილებისთვის, მაშინ გაუშვით შემდეგი სკრიპტი:

define("BX_FILE_PERMISSIONS", 0644);

define("BX_DIR_PERMISSIONS", 0755);

ფუნქცია chmod_R($path) (

$handle = opendir($path);

while (false!== ($file = readdir($handle))) (

თუ (($file!== ".") && ($file!== "..")) (

if (is_file($path."/".$file)) (

chmod($path. "/" . $file, BX_FILE_PERMISSIONS);

chmod($path. "/" . $file, BX_DIR_PERMISSIONS);

chmod_R($path. "/" . $file);

closeir ($ handle);


$path=dirname(__FILE__);

ფაილებისა და საქაღალდეებისთვის რეკურსიული უფლებების ცალკე დასაყენებლად, შეგიძლიათ გამოიყენოთ ზოგიერთი პროგრამა FTPკლიენტებს. Მაგალითად, FlashFXPვერსია 3.xx და უფრო მაღალი.

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

ყურადღება მიაქციეთ შესაბამისი დროშების პარამეტრებს:

· ცალ-ცალკეკომპლექტიფაილიდასაქაღალდეატრიბუტები(ცალკე დააყენეთ უფლებები ფაილებზე და საქაღალდეებზე);

· მიმართეთცვლილებებირომყველაქვესაქაღალდეებიდაფაილები(ქვესაქაღალდეებსა და ფაილებზე ნებართვების რეკურსიულად დაყენება).

თითოეული ინსტალაციისთვის კონფიგურირებულია საკუთარი დონე (ნახ. 10.3 და სურ. 10.4):

https://pandia.ru/text/80/333/images/image084.gif" width="353" height="310 src=">

ბრინჯი. 10.4 საქაღალდის ნებართვების დაყენება

Შენიშვნა:მოდული სტრუქტურის მართვასაშუალებას გაძლევთ ნახოთ ფაილებსა და საქაღალდეებზე წვდომის უფლებები დაყენებული სისტემის დონეზე (ნახ. 10.5):

Owner" href="/text/category/vladeletc/" rel="bookmark">მფლობელი და მომხმარებელთა ჯგუფი (*nix-ისთვის).

ფაილის გამოყენება. htaccess

AT ამ განყოფილებასგანიხილავს, თუ როგორ უნდა დააკონფიგურიროთ ვებ სერვერი აპაჩიფაილის გამოყენებით .htaccess.

უმეტეს შემთხვევაში, სერვერის მომხმარებელს არ აქვს სერვერის კონფიგურაციის ფაილზე წვდომის უფლება ( httpd. კონფ), რომელიც ვრცელდება ყველა მომხმარებლისთვის. ფაილი .htaccessსაშუალებას გაძლევთ განახორციელოთ კონფიგურაციის ცვლილებები, რომლებიც გავლენას მოახდენს მხოლოდ თქვენს საიტზე.

ფაილის პარამეტრების გასაკეთებლად .htaccessარ იყო უგულებელყოფილი სისტემის მიერ, სერვერის კონფიგურაციის ფაილში httpd. კონფგამოყენების ნებართვა .htaccess.. შეამოწმეთ ამ ნებართვის მხარდაჭერა.

ფაილი .htaccessშეიცავს დირექტივებს, რომლებიც ეხება დირექტორიას, რომელშიც მოცემული ფაილიმდებარეობს, ისევე როგორც ამ დირექტორიაში არსებული ყველა ქვეცნობარი. Თუ .htaccessმდებარეობს სერვერის root დირექტორიაში, შემდეგ მისი ეფექტი ვრცელდება მთელ სერვერზე, გარდა იმ დირექტორიებისა, რომლებშიც მდებარეობს მისი ფაილი .htaccess. ფაილის დირექტივები .htaccessგამოიყენება მათი აღმოჩენის თანმიმდევრობით. ამგვარად, მოცემულ დირექტორიაში ფაილის დირექტივები უპირატესობას ანიჭებს დირექტორიაში არსებულ დირექტივებს, რომლებიც მდებარეობს დირექტორიაში მაღლა.

ფაილში ცვლილებების შეტანისას .htaccessარ არის საჭირო სერვერის გადატვირთვა. ფაილი .htaccessმოწმდება სერვერთან დაკავშირების ყოველ ჯერზე, რათა ცვლილებები ძალაში შევიდეს მათი განხორციელებისთანავე. ვინაიდან ფაილი არის სერვისის ფაილი, ის არ არის ხელმისაწვდომი მომხმარებლებისთვის ვებ ბრაუზერიდან.

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

Შენიშვნა:ინსტალაციის დროს, წინასწარი შემოწმების ნაბიჯი ამოწმებს ფაილების დამუშავებას .htaccess.

მიწოდებულ პროდუქტში, ფაილი .htaccessნაგულისხმევად შეიცავს შემდეგ დირექტივებს:

ოფციები - ინდექსები

შეცდომადოკუმენტი 404 /404.php

#php_flag allow_call_time_pass_reference 1

#php_flag სესია. use_trans_sid off

#php_value display_errors 1

php_value mbstring. func_overload 2

php_value mbstring. შიდა_დაშიფვრა UTF-8

ოფციები +FollowSymLinks

ძრავის გადაწერა ჩართულია

RewriteRule.* -


RewriteCond %(REQUEST_FILENAME) !-f

RewriteCond %(REQUEST_FILENAME) !-l

RewriteCond %(REQUEST_FILENAME) !-d

RewriteCond %(REQUEST_FILENAME) !/bitrix/urlrewrite. php$

RewriteRule ^(.*)$ /bitrix/urlrewrite. php[L]

DirectoryIndex ინდექსი. php ინდექსი. html

ExpiresActive on

ExpiresByType image/jpeg "წვდომა პლუს 3 დღე"

ExpiresByType სურათი/გიფ "წვდომა პლუს 3 დღე"

Შენიშვნა:კომენტარის გასააქტიურებლად PHPდირექტივები, ამოიღეთ კომენტარის ნიშანი ( # ) ხაზის დასაწყისში. თუ თქვენი სერვერი აპაჩინებართვა არ არის მითითებული PHP- დროშებით, ამ დირექტივების შესრულება გამოიწვევს შიდა შეცდომას (500). თუ შეცდომა მოხდა, კვლავ გააკეთეთ კომენტარი დირექტივებზე თითოეულის დასაწყისში ნიშნის დაყენებით # .

Სხვებისთვის PHPდირექტივები არ არის მონიშნული კომენტარის ნიშნით ( # ), დაამატა შემოწმება საჭირო მოდულების არსებობისთვის აპაჩისისტემაში. ამ დირექტივების შესრულება არ გამოიწვევს სისტემაში შეცდომას.

· PHPდირექტივა php_flag სესია. use_trans_sid offგამორთავს სესიის იდენტიფიკატორის ჩანაცვლებას საიტზე ბმულზე.

· მნიშვნელობა PHPდროშა php_value display_errorsტოლია 1 , მიუთითებს, რომ შეცდომის შეტყობინებების ჩვენების ნებართვა ჩართულია, დირექტივა php_value error_reportingგანსაზღვრავს შეცდომების დონეს, რომელიც გამოიწვევს შეტყობინებას. მითითებული დირექტივების გამოყენებით, შეგიძლიათ დააკონფიგურიროთ თარჯიმნის გამომავალი რეჟიმი PHPშეცდომის შეტყობინებები.

დირექტივები php_value mbstring. func_overload 2და php_value mbstring. შიდა_დაშიფვრა UTF-8ბიბლიოთეკის პარამეტრების მართვა mbstring.

ბლოკის დირექტივები IfModule mod_rewrite. გარის წესების დაყენება mod_rerite.

დირექტივა ExpiresActive onმოიცავს სურათების ქეშირებას, რაც საშუალებას გაძლევთ დააჩქაროთ მათი ჩატვირთვა, როდესაც ხელახლა შეხვალთ საიტის გვერდებზე. დირექტივები ExpiresByType image/jpeg "წვდომა პლუს 3 დღე"და ExpiresByType სურათი/გიფ "წვდომა პლუს 3 დღე", თავის მხრივ, მე განვსაზღვრავ გამოსახულების ფორმატს და პერიოდს, რომლისთვისაც განხორციელდება ქეშირება. ნაგულისხმევად, სურათები ქეშირებულია ფორმატში *.jpegდა *.gif 3 დღის ვადით.

Შენიშვნა:ცვლილებების შეტანის შემდეგ, ფაილი .htaccessუნდა იყოს შენახული UNIX ფორმატში (FAR shell ვარიანტისთვის "Save as UNIX text").

სერვერის შეცდომები

500 - შიდა სერვერის შეცდომა

სერვერის შეცდომა შეიძლება გამოწვეული იყოს სხვადასხვა მიზეზით, ამიტომ მისი დიაგნოზი საკმაოდ რთული და შრომატევადია. ეს არ არის "1C-Bitrix: საიტის მენეჯმენტის" შეცდომა. სერვერის შეცდომა ხშირად ხდება საერთო ჰოსტინგზე სისტემის რესურსების ლიმიტის გამო.

თუ სერვერის შეცდომას წააწყდებით, ჯერ უნდა გადახედოთ სერვერის ფაილს შეცდომა. ჟურნალი. ეს ფაილი შეიძლება შეიცავდეს ხაზს შეცდომის კოდით.

· სერვერის შეცდომის მიზეზის ტიპიური მაგალითი შეიძლება იყოს ჰოსტინგზე დაშვებული უფლებების გადამეტება.

მაგალითად, მცდელობაა შესრულდეს ფაილი ატრიბუტებით, რომლებიც დაუშვებელია სერვერზე (მაგალითად, ფაილს აქვს ატრიბუტები 0755 და დაშვებულია 0711 ).

· ასევე შესაძლო მიზეზიშეიძლება არსებობდეს შესრულების ვადა PHP- სკრიპტები. ან სისტემას არ აქვს ფაილის ჩაწერის ან წაკითხვის უფლება და ა.შ.

· შიდა სერვერის შეცდომის კიდევ ერთი გავრცელებული მიზეზი არის სერვერის კონფიგურაციის დარღვევა ან არაავტორიზებული ინსტრუქციების გამოყენების მცდელობა, მაგალითად, ფაილში .htaccess. ამ შემთხვევაში, თქვენ უნდა გააკეთოთ კომენტარი ან წაშალოთ სტრიქონი, რომელიც შეიცავს გადაუჭრელ დირექტივას შესაბამის ფაილში (მაგალითად, .htaccess).

Შენიშვნა:თუ PHPმუშაობს როგორც CGI, მაშინ სერვერზე 500 შეცდომა შეიძლება გამოწვეული იყოს ფატალური შეცდომით PHP. ამ შემთხვევაში რეკომენდებულია შემოწმება პროგრამის კოდიდა შეცდომის დიაგნოსტიკა.

გააზიარეთ