WordPress-in defolt .htaccess faylı: kod və bərpa qaydası
WordPress-in daimi keçidlər üçün yazdığı dəqiq .htaccess kodu, hər sətrin işi və yazılar 404 verib ana səhifə açılanda faylın necə bərpa edildiyi.
WordPress-in defolt .htaccess faylı, proqramın saytınızın kök qovluğundakı .htaccess faylına yazdığı qısa RewriteEngine blokudur. Onun sayəsində /2026/10/post-name/ kimi daimi keçidlər 404 qaytarmır, işləyir. O belə görünür:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Bu qaydalar WordPress-in bloku yaratmaq üçün istifadə etdiyi koddan gəlir və WordPress-in öz .htaccess bələdçisi ilə üst-üstə düşür. WordPress # BEGIN WordPress sətrindən dərhal sonra işarələr arasındakı dəyişikliklərin üzərinə yazılacağını bildirən üç şərh sətri də yazır. Onlar qaydaların işinə təsir etmir.
Alt qovluq quraşdırmasında WordPress alt qovluğun yolunu həm RewriteBase-ə, həm də son qaydaya yazır, məsələn RewriteBase /blog/ və RewriteRule . /blog/index.php [L]. Multisite şəbəkələri fərqli blok istifadə edir və WordPress bu faylı onlar üçün avtomatik yazmır.
Əsas məqamlar
- WordPress bu bloku Apache və LiteSpeed-də, yazma icazəsi olanda və gözəl daimi keçidlər aktiv olanda yaradır. Tənzimləmələr > Daimi Keçidlər səhifəsini açmaq kifayətdir.
- Fayl yoxdursa və ya zədələnibsə, daimi keçidlər 404 qaytarır, ana səhifə isə açılır, çünki ona yenidən yazma qaydaları lazım deyil.
- Sizin və ya plaginin əlavə etdiyi hər şeyi
# BEGIN WordPresssətrinin üstünə qoyun, heç vaxt işarələrin içinə yox. WordPress faylı yeniləyəndə onların arasındakı hər şeyi əvəz edir.

index.php faylı dururdu.Hər sətir nə edir
RewriteEngine On bu qovluq üçün Apache-nin mod_rewrite modulunu işə salır; bu sətir olmadan aşağıdakı yenidən yazma qaydaları heç nə etmir.
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] URL-i dəyişmir (- bunu bildirir) və sorğunun Authorization başlığını server dəyişəninə köçürür. WordPress bu dəyişəni oxuyur ki, başlıqda göndərilən istifadəçi adını və parolu, məsələn tətbiq parolunu, götürsün.
RewriteBase / Apache-nin yenidən yazılmış URL-lər üçün istifadə etdiyi yol prefiksini təyin edir. WordPress onu saytın yerləşdiyi yerə uyğun qurur, buna görə alt qovluq quraşdırması RewriteBase /blog/ alır.
RewriteRule ^index\.php$ - [L] qoruyucu qaydadır: sorğu artıq index.php-dirsə, yenidən yazma dayanır və sorğu dəyişmədən keçir.
İki RewriteCond sətri əsl məntiqdir. %{REQUEST_FILENAME} !-f və !-d soruşur: “Bu sorğu həqiqi fayla və həqiqi qovluğa UYĞUN GƏLMİR?” Son qaydanın işləməsi üçün hər ikisi doğru olmalıdır. Buna görə həqiqi şəkil, CSS faylı və ya yüklənmiş PDF birbaşa verilir və WordPress-in yönləndirməsinə heç vaxt toxunmur.
RewriteRule . /index.php [L] daimi keçidləri işlədən sətirdir. Bu iki şərtdən keçən hər şey index.php-yə göndərilir və WordPress URL-in hansı yazını, səhifəni və ya arxivi bildirdiyinə qərar verir.
WordPress bu faylı nə vaxt yenidən yaradır, nə vaxt yaratmır
WordPress Tənzimləmələr > Daimi Keçidlər ekranı hər yüklənəndə yenidən yazma qaydalarını yeniləyir, ona görə də onu açmaq kifayətdir və Dəyişiklikləri Saxla düyməsini basmaq lazım deyil. .htaccess yoxdursa, qovluq yazıla bilən olduqda və gözəl daimi keçidlər aktiv olduqda WordPress onu yaradır. Fayl varsa və yazıla biləndirsə, WordPress işarələr arasındakı bloku əvəz edir.
Bu hallarda problem belə həll olunmur:
- Fayl və ya onun qovluğu PHP-nin işlədiyi istifadəçi üçün yazıla bilən deyil. Ekran
.htaccessfaylının yazıla bilən olmadığını bildirən xəta və yapışdırılacaq qaydaları göstərir. Bəzi hostinqlərdə PHP FTP ilə yüklədiyiniz faylların sahibindən fərqli sistem istifadəçisi ilə işləyir, buna görə FTP proqramında düzgün görünən icazələr yenə də WordPress-in qarşısını ala bilər. - Siz nginx istifadə edirsiniz. WordPress-in nginx bələdçisi bildirir ki, nginx-də
.htaccesskimi qovluq səviyyəli konfiqurasiya faylı yoxdur və WordPress server konfiqurasiyasını dəyişə bilmir. Bunun qarşılığı server konfiqurasiyasındakıtry_filesdirektividir və onu administrator redaktə etməlidir. AllowOverridedəyəriNone-dur, yəni əsas Apache konfiqurasiyasında saytınızın qovluğu üçün belə təyin olunub. Apache sənədləri deyir: “This means .htaccess files are completely ignored unless you explicitly enable them for a directory.” Yəni qovluq üçün açıq şəkildə aktiv etməsəniz,.htaccessfaylları tamamilə nəzərə alınmır. WordPress mükəmməl fayl yaza bilər, amma o yenə də heç nə etməz. Yenidən yazma qaydalarınaAllowOverride FileInfo(və yaAll) lazımdır və bunu hostinqiniz dəyişməli ola bilər.- Daimi keçidləriniz Sadə (Plain) rejimindədir. Sadə URL-lərə yenidən yazma qaydaları lazım deyil, buna görə WordPress onlar üçün faylı yaratmır.
Əllə necə bərpa edilir
Ana səhifə işləyərkən yazılar və səhifələr 404 verirsə, ilk növbədə .htaccess faylının yoxluğunu və ya pozulmasını yoxlayın. Bunu iki addımda düzəldin.
1. Əvvəlcə bir kliklə həlli sınayın. wp-admin-də Tənzimləmələr > Daimi Keçidlər ekranını açın və heç nə dəyişmədən Dəyişiklikləri Saxla düyməsini basın. WordPress faylı yaza bilirsə, bu onu yenidən yaradır. Yaza bilmirsə, ekranda xəta və lazım olan qaydalar görünür.
2. Bu həll etmirsə, faylı əllə yaradın. FTP/SFTP və ya hostinqinizin fayl idarəçisi ilə qoşulun və saytınızın kök qovluğuna gedin, adətən bu, wp-admin olan qovluqdur. .htaccess faylının olub-olmadığını yoxlayın. Adı nöqtə ilə başladığı üçün bəzi fayl idarəçiləri onu defolt olaraq gizlədir; “gizli faylları göstər” seçimini aktivləşdirin.
- Yoxdursa, adı dəqiq
.htaccessolan yeni fayl yaradın (.txtyox, nöqtədən əvvəl heç nə yox). - WordPress-in göstərdiyi qaydaları və ya bu bələdçinin əvvəlindəki defolt bloku yapışdırın. Alt qovluq quraşdırmasında
RewriteBasevə son qaydanı uyğunlaşdırın. - Saxlayın, sonra işlədiyini təsdiqləmək üçün bir yazının daimi keçidini yenidən yükləyin.
Yenə 404 verirsə, .htaccess nəzərə alınmaya bilər. AllowOverride barədə hostinqinizdən soruşun, çünki o söndürüləndə Apache düzgün faylı da nəzərə almır.
Sizin öz qaydalarınız və WordPress-in bloku
Plagin və ya əl redaktəsi yönləndirmələr, hotlink qoruması və ya keş başlıqları kimi öz qaydalarını əlavə edə bilər. Onları WordPress-in blokundan kənarda və üstündə saxlayın ki, onun ümumi qaydasından əvvəl işləsinlər:
# Sizin və ya plaginin əlavə etdiyi qaydalar: WordPress işarələrinin ÜSTÜNDƏ
<FilesMatch "\.(jpg|jpeg|png|gif)$">
# nümunə: hotlink qoruması, keş qaydaları və s.
</FilesMatch>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN WordPress və # END WordPress arasına qoyulan hər şey WordPress faylı növbəti dəfə yeniləyəndə itir və bunun üçün Daimi Keçidlər ekranını yükləmək kifayətdir. İşarələrdən əvvəlki və sonrakı sətirlər saxlanılır. Yönləndirmələrin harada olmalı olduğunu və dövrələrdən necə qaçmağı öyrənmək üçün WordPress .htaccess yönləndirmə qaydalarının düzgün qurulması bələdçisinə baxın.
Faylı redaktə etdikdən dərhal sonra görünən 500 Internal Server Error indicə dəyişdiyiniz yeri göstərir. Apache sənədlərinə görə xəta jurnalı çox güman ki, icazə verilməyən direktivin adını və ya sintaksis xətasını göstərəcək. Köhnə dərslikdən kopyalanan qaydalar buna səbəb ola bilər: mod_access_compat yüklənməyibsə, Order Apache 2.4-də etibarsız əmrdir. Saytı qaytarmaq üçün dəyişikliyi geri alın, sonra xəta jurnalını oxuyun.
Defolt blokdan kənarda
Defolt blok yalnız daimi keçidlərin yönləndirilməsi və Authorization başlığı ilə məşğul olur. Həssas fayllara girişi sərtləşdirmək, məsələn /uploads qovluğunda PHP icrasını bloklamaq və ya wp-config.php faylına birbaşa sorğuları rədd etmək üçün həqiqətən kömək edən WordPress .htaccess təhlükəsizlik qaydalarına baxın. Daimi keçidlər səhv struktur, köhnə qaydaları verən keş qatı və ya multisite alt qovluq münaqişəsi kimi başqa səbəbdən 404 verirsə, WordPress daimi keçidləri işləmir bələdçisi digər səbəbləri izah edir.
Tez-tez verilən suallar
WordPress-in defolt .htaccess faylı nədir?
Bu, WordPress-in saytın kök qovluğundakı .htaccess faylında # BEGIN WordPress və # END WordPress arasına yazdığı RewriteEngine blokudur. O, Authorization başlığını PHP-yə ötürür və həqiqi fayl və ya qovluq olmayan hər sorğunu index.php-yə göndərir.
WordPress-in dəqiq defolt .htaccess kodu nədir?
RewriteEngine On, Authorization başlığını PHP-yə ötürən qayda, RewriteBase /, index.php üçün keçid qaydası, sorğunun həqiqi fayl və ya qovluq olmadığını yoxlayan iki şərt və qalan hər şeyi index.php-yə göndərən son qayda. Tam blok bu bələdçinin əvvəlindədir.
Niyə ana səhifə istisna olmaqla bütün yazılarım 404 verir?
Apache-də çatışmayan və ya zədələnmiş .htaccess faylı bu mənzərəni yaradır. Server ana səhifəni yenidən yazma qaydaları olmadan tapa bilir. Hər digər daimi keçid index.php-yə çatmaq üçün bu qaydalara ehtiyac duyur, ona görə də onlarsız Apache mövcud olmayan faylı axtarır və 404 qaytarır.
WordPress .htaccess-i avtomatik yenidən yaradır?
Bəli, mod_rewrite olan Apache və ya LiteSpeed-də, gözəl daimi keçidlər aktivdirsə və WordPress ora yaza bilirsə. Bunun üçün Tənzimləmələr > Daimi Keçidlər səhifəsini açmaq kifayətdir. Fayl yoxdursa, qovluq yazıla bilən olmalıdır, mövcud fayl isə özü yazıla bilən olmalıdır. Əks halda ekranda xəta və əllə yapışdırılacaq qaydalar göstərilir.
Niyə nginx-də WordPress .htaccess faylı yoxdur?
nginx-də Apache-nin .htaccess faylı kimi qovluq səviyyəli konfiqurasiya faylı yoxdur. Eyni yönləndirmə nginx server konfiqurasiyasında try_files qaydası kimi yazılır. Onu administrator redaktə etməlidir, çünki WordPress onu dəyişə bilmir.
Daimi keçidləri saxladıqdan sonra niyə .htaccess-im pozuldu?
Xüsusi qaydanın # BEGIN WordPress və # END WordPress işarələrinin içinə qoyulub-qoyulmadığını yoxlayın. WordPress faylı yeniləyəndə onların arasındakı hər şeyi əvəz edir, buna görə həmin qayda itir. Xüsusi qaydaları işarələrin üstündə saxlayın.
Mənbələr
- WordPress Advanced Administration: .htaccess
- WordPress Advanced Administration: Nginx
- WordPress mənbə kodu: class-wp-rewrite.php, options-permalink.php, misc.php, load.php, user.php, vars.php
- Apache HTTP Server 2.4: .htaccess files, mod_rewrite, Upgrading to 2.4
Defolt daimi keçid bloku və həqiqətən lazım olan təhlükəsizlik və ya yönləndirmə qaydaları ilə təmiz, düzgün .htaccess faylını pulsuz WordPress .htaccess generatoru ilə yenidən qurun.
FAQ
Suallar
WordPress-in defolt .htaccess faylı nədir?
Bu, WordPress-in saytın kök qovluğundakı .htaccess faylında # BEGIN WordPress və # END WordPress arasına yazdığı RewriteEngine blokudur. O, Authorization başlığını PHP-yə ötürür və həqiqi fayl və ya qovluq olmayan hər sorğunu index.php-yə göndərir.
WordPress-in dəqiq defolt .htaccess kodu nədir?
RewriteEngine On, Authorization başlığını PHP-yə ötürən qayda, RewriteBase /, index.php üçün keçid qaydası, sorğunun həqiqi fayl və ya qovluq olmadığını yoxlayan iki şərt və qalan hər şeyi index.php-yə göndərən son qayda. Tam blok bu bələdçinin əvvəlindədir.
Niyə ana səhifə istisna olmaqla bütün yazılarım 404 verir?
Apache-də çatışmayan və ya zədələnmiş .htaccess faylı bu mənzərəni yaradır. Server ana səhifəni yenidən yazma qaydaları olmadan tapa bilir. Hər digər daimi keçid index.php-yə çatmaq üçün bu qaydalara ehtiyac duyur, ona görə də onlarsız Apache mövcud olmayan faylı axtarır və 404 qaytarır.
WordPress .htaccess-i avtomatik yenidən yaradır?
Bəli, mod_rewrite olan Apache və ya LiteSpeed-də, gözəl daimi keçidlər aktivdirsə və WordPress ora yaza bilirsə. Bunun üçün Tənzimləmələr > Daimi Keçidlər səhifəsini açmaq kifayətdir. Fayl yoxdursa, qovluq yazıla bilən olmalıdır, mövcud fayl isə özü yazıla bilən olmalıdır. Əks halda ekranda xəta və əllə yapışdırılacaq qaydalar göstərilir.
Niyə nginx-də WordPress .htaccess faylı yoxdur?
nginx-də Apache-nin .htaccess faylı kimi qovluq səviyyəli konfiqurasiya faylı yoxdur. Eyni yönləndirmə nginx server konfiqurasiyasında try_files qaydası kimi yazılır. Onu administrator redaktə etməlidir, çünki WordPress onu dəyişə bilmir.
Daimi keçidləri saxladıqdan sonra niyə .htaccess-im pozuldu?
Xüsusi qaydanın # BEGIN WordPress və # END WordPress işarələrinin içinə qoyulub-qoyulmadığını yoxlayın. WordPress faylı yeniləyəndə onların arasındakı hər şeyi əvəz edir, buna görə həmin qayda itir. Xüsusi qaydaları işarələrin üstündə saxlayın.