Məzmuna keç
Server və .htaccess

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.

Nəşr olundu

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 WordPress sə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.
Apache-dən terminal çıxışı: .htaccess faylı olmayanda ana səhifə 200, yazı URL-i 404 qaytarır; standart blokla hər ikisi 200 qaytarır
Apache 2.4.58-dən real cavablar. Fayl olmayanda ana səhifə açılır, yazı URL-i isə 404 qaytarır. Standart blokla hər ikisi 200 qaytarır. WordPress-in yerində bir sətirlik test 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 .htaccess faylı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ə .htaccess kimi qovluq səviyyəli konfiqurasiya faylı yoxdur və WordPress server konfiqurasiyasını dəyişə bilmir. Bunun qarşılığı server konfiqurasiyasındakı try_files direktividir və onu administrator redaktə etməlidir.
  • AllowOverride dəyəri None-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, .htaccess faylları 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ına AllowOverride FileInfo (və ya All) 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 .htaccess olan yeni fayl yaradın (.txt yox, 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 RewriteBase və 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


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.