403 Forbidden хатоси 404 дан фарқли равишда «саҳифа топилмади» дегани эмас. Сервер сўралган манзилни топди, лекин уни сизга кўрсатишга рухсат йўқ деб ҳисоблади. Бу қарор турли даражаларда қабул қилиниши мумкин: файл тизимидаги рухсатлар, веб-сервер созламалари, .htaccess қоидалари, хавфсизлик плагинлари ёки тармоқ даражасидаги IP блоклари. Шунинг учун 403 ни тузатишда аввал хато кимга ва қайси манзилда чиқаётганини аниқлаб олиш муҳим, чунки бу сабабни анча торайтиради.
Хато кимда ва қаерда чиқаяпти
Аввал оддий саволларга жавоб топинг. Хато бутун сайтда чиқаяптими ёки фақат битта папкада, масалан /wp-admin/ ёки /uploads/ да? У ҳамма фойдаланувчиларда борми ёки фақат сизнинг компьютерингизда ва офис тармоғингизда? Бошқа тармоқдан, масалан мобил интернетдан очиб кўринг. Агар мобил интернетда сайт очилса-ю, офис Wi-Fi тармоғида 403 чиқса, сабаб деярли аниқ IP блоклашда: хавфсизлик тизими ёки файрвол сизнинг IP манзилингизни шубҳали деб белгилаган бўлиши мумкин.
Агар хато фақат бош саҳифада чиқса, ички саҳифалар эса ишласа, кўпинча муаммо index файлида бўлади. Фақат маълум папкада чиқса, ўша папкадаги .htaccess ёки рухсатларни текшириш керак.
Index файли йўқлиги ва папка рўйхати
Сиз example.uz манзилини очганингизда сервер сайт илдизидан index.php ёки index.html файлини қидиради. Агар бундай файл бўлмаса ва папка таркибини кўрсатиш ўчирилган бўлса, сервер 403 қайтаради. Бу кўпинча файллар нотўғри папкага юкланганда бўлади: масалан, архив очилганда барча файллар www/example.uz/site/ ичида қолиб кетади, илдизда эса ҳеч нарса йўқ. Файл менежерида сайт илдизини очинг ва index файли айнан ўша жойда турганини текширинг.
Папка таркибини очиқ кўрсатишни ёқиш муаммони ечмайди, аксинча, хавфсизликни пасайтиради. Тўғри йўл файлларни керакли жойга кўчириш ёки index файлини яратишдир.
Файл ва папка рухсатлари
Веб-сервер файлни ўқий олмаса, 403 қайтаради. Одатий тўғри рухсатлар: папкалар учун 755, файллар учун 644. Агар папкага 700 ёки файлга 600 қўйилган бўлса ва веб-сервер бошқа фойдаланувчи номидан ишласа, кириш рад этилади. Баъзи FTP дастурлари ёки архивдан чиқариш жараёни рухсатларни нотўғри ўрнатиб қўяди. SSH орқали текшириш ва тиклаш мумкин:
ls -la ~/www/example.uz
find ~/www/example.uz -type d -exec chmod 755 {} \;
find ~/www/example.uz -type f -exec chmod 644 {} \;
Файл эгаси ҳам аҳамиятга эга. Агар файллар root ёки бошқа фойдаланувчи номидан яратилган бўлса, сайт фойдаланувчиси уларни ўқий олмаслиги мумкин. ISPmanager файл менежерида эгаси ва рухсатлар кўрсатилади, уларни у ердан ҳам ўзгартириш мумкин.
.htaccess даги тақиқловчи қоидалар
.htaccess файлида киришни чекловчи қоидалар бўлиши мумкин ва улар баъзан сиз кутмаган жойда ишлайди. Масалан, админ панелни ҳимоя қилиш учун қўйилган IP чеклови сизнинг провайдерингиз IP манзили ўзгаргач, ўзингизни ҳам блоклаб қўяди. Apache 2.4 да бундай қоидалар қуйидагича кўринади:
<Files "wp-login.php">
Require ip 203.0.113.10
</Files>
# yoki butun papkani yopish
Require all denied
Эски Apache синтаксисида эса Order deny,allow ва Deny from all қаторлари ишлатилади. Бундай қаторларни қидириб топинг ва улар ҳозирги вазиятга мослигини текширинг. Текшириш учун файлни вақтинча қайта номлаш мумкин:
mv .htaccess .htaccess.off
Агар шундан кейин 403 йўқолса, сабаб аниқ шу файлда. Шуни унутмангки, .htaccess фақат сайт илдизида эмас, ички папкаларда ҳам бўлиши мумкин ва улар юқоридаги қоидаларни ўзгартиради. Масалан, uploads папкасидаги .htaccess хавфсизлик учун PHP файлларни бажаришни тақиқласа, бу тўғри созлама; лекин у расмларни ҳам ёпиб қўйса, сайт расмларсиз очилади.
Хавфсизлик плагинлари ва файрвол
WordPress хавфсизлик плагинлари кўп марта нотўғри парол киритилган IP манзилни вақтинча блоклайди ва бу ҳам 403 кўринишида чиқиши мумкин. Мисол учун, Самарқанддаги хусусий клиника сайтида администратор янги телефондан бир неча марта эски паролни киритган, натижада плагин унинг IP манзилини блоклаган ва ходимлар офисдан админ панелга кира олмай қолган. Бундай ҳолатда плагин созламаларидаги блокланган IP рўйхатини тозалаш ёки плагин папкасини вақтинча қайта номлаш ёрдам беради.
Сервер даражасида ҳам ҳимоя тизимлари ишлайди: жуда кўп сўров юборган ёки шубҳали нақшдаги сўровлар (масалан, URL ичида SQL буйруқлари) автоматик блокланиши мумкин. Агар ўзингизнинг IP манзилингиз блокланган деб ўйласангиз, уни техник ёрдамга юбориш керак, чунки бундай блоклар мижоз томонидан кўринмайди.
Маълум файл турларига кириш
Баъзан 403 фақат маълум файлларда чиқади ва бу тўғри ҳолат бўлиши мумкин. Кўплаб серверларда .env, .git, захира архивлари ёки конфигурация файлларига браузер орқали кириш атайлаб ёпилади, чунки улар пароллар ва махфий калитларни ўз ичига олади. Агар сиз шундай файлни браузерда очмоқчи бўлсангиз ва 403 олсангиз, бу ҳимоя ишлаётганини билдиради. Бундай файлларни FTP ёки файл менежери орқали юклаб олиш керак.
Текшириш тартиби
Сабабни тез топиш учун қуйидаги кетма-кетлик қулай:
- Сайтни бошқа тармоқдан (мобил интернет) очиб, IP блокини истисно қилинг.
- Сайт илдизида index файли борлигини текширинг.
- Папка ва файл рухсатларини 755/644 га келтиринг, эгасини текширинг.
- .htaccess ни вақтинча ўчириб, натижани кўринг.
- Хавфсизлик плагинларини вақтинча ўчириб кўринг.
- Сайт хато журналида «client denied» каби ёзувларни қидиринг.
Хато журнали кўпинча аниқ жавоб беради: Apache логида қайси қоида ёки қайси рухсат сабабли кириш рад этилгани ёзилади. Агар барча қадамлардан кейин ҳам сабаб топилмаса, sayt.uz кабинетидаги техник ёрдам бўлимига саҳифа манзили ва IP манзилингизни ёзиб тикет қолдиринг.