Lompat ke konten
Server & .htaccess

File .htaccess Default WordPress: Isinya dan Cara Memulihkannya

Blok .htaccess yang persis ditulis WordPress untuk permalink, kapan WordPress membuatnya ulang secara otomatis, dan cara memulihkannya secara manual saat artikel 404 tapi halaman depan tetap dimuat.

Dipublikasikan

File .htaccess default WordPress adalah blok RewriteEngine singkat yang ditulis software ini ke dalam .htaccess di root situs Anda, agar permalink seperti /2026/10/nama-artikel/ bisa diselesaikan bukannya 404. Bentuknya seperti ini:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Itulah blok yang persis, diambil dari panduan resmi WordPress tentang Apache HTTP Server dan logika rewrite yang didokumentasikan di halaman HelpHub tentang permalink cantik. Jika RewriteBase Anda bukan / — misalnya karena WordPress diinstal di subfolder — blok ini akan cocok dengan path tersebut, dan itu juga normal, dihasilkan oleh WordPress sendiri.

Poin penting

  • WordPress menghasilkan blok ini secara otomatis, hanya di Apache dan LiteSpeed, setiap kali file bisa ditulis dan Anda menyimpan Pengaturan > Permalink.
  • Jika file hilang atau rusak, semua permalink kecuali halaman depan akan mengembalikan 404, karena hanya halaman depan yang bisa ditemukan tanpa aturan rewrite.
  • Apa pun yang Anda atau plugin tambahkan harus berada di atas # BEGIN WordPress, jangan pernah di dalam marker — WordPress menimpa semua yang ada di antaranya setiap kali permalink disimpan.

Perlu membangun ulang file dengan path asli Anda dan beberapa aturan tambahan? Generator .htaccess WordPress merangkai satu yang benar langsung di browser Anda.

Apa yang dilakukan setiap baris

RewriteEngine On mengaktifkan modul mod_rewrite Apache untuk direktori ini; tanpa ini, semua yang di bawahnya tidak aktif.

RewriteBase / memberi tahu Apache bahwa path yang ditulis ulang relatif terhadap root situs. WordPress mengaturnya sesuai dengan tempat situs sebenarnya berada — instalasi di subfolder mendapat RewriteBase /blog/, bukan /.

RewriteRule ^index\.php$ - [L] adalah pengaman tanpa efek: jika permintaan sudah berupa index.php, rewrite berhenti dan permintaan lewat tanpa diubah.

Dua baris RewriteCond adalah logika sebenarnya. %{REQUEST_FILENAME} !-f dan !-d menanyakan “apakah permintaan ini BUKAN file nyata, dan BUKAN direktori nyata?”. Keduanya harus benar agar aturan terakhir berlaku — jadi gambar asli, file CSS, atau PDF yang diunggah akan dilayani langsung dan tidak pernah menyentuh routing WordPress.

RewriteRule . /index.php [L] adalah yang membuat permalink berfungsi: apa pun yang lolos dari dua kondisi sebelumnya — artinya bukan file atau folder nyata — dikirim ke index.php, dan routing WordPress sendiri (WP_Query, tag rewrite) memutuskan artikel, halaman, atau arsip mana yang sebenarnya dimaksud URL tersebut.

Kapan WordPress membuat ulang file ini, dan kapan tidak berhasil

WordPress mencoba menulis .htaccess sendiri setiap kali Anda membuka Pengaturan > Permalink dan klik Simpan Perubahan, bahkan jika tidak ada yang berubah di layar. Penyimpanan tersebut memicu flush_rewrite_rules(), yang mencoba membuka .htaccess untuk ditulisi dan menyisipkan blok saat ini di antara marker.

Upaya ini gagal secara diam-diam, membuat file hilang atau tidak terbarui, saat:

  • File atau folder induknya tidak bisa ditulisi oleh pengguna yang menjalankan PHP. Pada banyak hosting bersama, PHP berjalan sebagai pengguna sistem yang berbeda dari yang mengunggah file via FTP, sehingga izin yang terlihat benar di klien FTP tetap bisa menghalangi WordPress menulis.
  • Anda menggunakan nginx. .htaccess hanyalah mekanisme Apache dan LiteSpeed (dokumentasi Apache sendiri tentang AllowOverride menjelaskan alasannya: nginx tidak memiliki file konfigurasi per-direktori yang dibaca ulang setiap permintaan). Setara di nginx adalah direktif try_files di dalam blok server, yang hanya bisa diedit oleh yang punya akses server; WordPress tidak pernah bisa menulisnya untuk Anda.
  • AllowOverride diatur ke None untuk direktori situs Anda dalam konfigurasi utama Apache. Ini adalah setelan yang memungkinkan .htaccess untuk menimpa apa pun; dokumentasi Apache jelas: dengan AllowOverride None, “file .htaccess sepenuhnya diabaikan” — WordPress bisa menulis file yang sempurna, dan tetap tidak berefek sampai setelan ini diubah di level server.
  • File terhapus atau tidak pernah ada, dan sesuatu dalam penyimpanan tidak memicu regenerasi — paling umum karena struktur permalink sudah sama, sehingga WordPress tidak melihat perubahan apa pun untuk dituliskan.

Cara memulihkannya secara manual

Jika artikel dan halaman 404 sementara halaman depan tetap berfungsi, itulah tanda khas .htaccess yang hilang atau rusak. Perbaiki dalam dua langkah.

1. Coba dulu perbaikan satu klik. Buka Pengaturan > Permalink di dasbor WordPress dan klik Simpan Perubahan tanpa mengubah apa pun. Jika file bisa ditulisi, ini saja sudah membuatnya ulang dan selesai.

2. Jika itu tidak membantu, buat file secara manual. Hubungkan via FTP/SFTP atau manajer file hosting Anda, masuk ke folder tempat WordPress diinstal (yang berisi wp-config.php), dan periksa apakah .htaccess ada sama sekali — ini file tersembunyi, beberapa manajer file menyembunyikannya secara default; aktifkan “tampilkan file tersembunyi”.

  • Jika hilang, buat file baru dengan nama tepat .htaccess (bukan .txt, tidak ada apa pun sebelum titik).
  • Tempel blok default di atas, sesuaikan RewriteBase jika WordPress berada di subfolder.
  • Simpan, lalu muat ulang permalink sebuah artikel untuk memastikan berfungsi.

Jika masih 404 setelah itu, penyebabnya sudah berubah dari “.htaccess hilang” menjadi “.htaccess diabaikan” — tanyakan ke hosting Anda tentang AllowOverride, karena file yang benar di direktori tempat Apache diperintahkan untuk mengabaikannya berperilaku persis sama dengan tidak adanya file.

Aturan Anda sendiri vs. blok WordPress

Plugin atau pengeditan manual bisa menambahkan aturan sendiri — redirect, perlindungan hotlink, header cache. Ini adalah blok yang berbeda dan terpisah dari yang dihasilkan WordPress, dan keduanya tidak boleh tumpang tindih:

# Aturan yang Anda atau plugin tambahkan — DI ATAS marker WordPress
<FilesMatch "\.(jpg|jpeg|png|gif)$">
    # contoh: perlindungan hotlink, aturan cache, dll.
</FilesMatch>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Apa pun yang ditempatkan di antara # BEGIN WordPress dan # END WordPress akan terhapus secara diam-diam saat ada orang berikutnya menyimpan layar Permalink, karena WordPress menganggap seluruh bagian itu sebagai miliknya dan menulis ulang seluruhnya. Ini adalah penyebab paling umum dari “aturan khusus saya menghilang” — aturan itu tidak pernah dihapus dengan sengaja, hanya berada di dalam blok yang dianggap WordPress sebagai miliknya. Untuk redirect secara khusus, lihat aturan redirect .htaccess WordPress yang dilakukan dengan benar untuk tahu di mana aturan itu seharusnya dan cara menghindari loop.

Ini juga penyebab paling umum dari 500 Internal Server Error yang mendadak muncul setelah mengedit file: aturan yang disalin dari posting forum yang ditulis untuk versi Apache lain (sintaks Order/Deny dari 2.2 dicampur dengan sintaks Require dari 2.4) merusak parsing seluruh file, termasuk blok WordPress di bawahnya, dan seluruh situs ikut turun — bukan hanya bagian yang Anda sentuh.

Lebih dari blok default

Blok default hanya menangani routing permalink. Jika Anda juga ingin mengetatkan akses ke file sensitif atau menambahkan segelintir aturan .htaccess yang benar-benar mengurangi permukaan serangan — memblokir eksekusi PHP di /uploads, menolak permintaan langsung ke wp-config.php — lihat aturan keamanan .htaccess WordPress yang benar-benar membantu. Dan jika permalink 404 karena alasan lain — struktur permalink yang salah, lapisan cache yang melayani aturan lama, konflik multisite di subdirektori — permalink WordPress yang tidak berfungsi membahas penyebab lainnya.

Pertanyaan yang sering diajukan

Apa itu file .htaccess default WordPress? Ini adalah blok RewriteEngine yang ditulis WordPress di antara # BEGIN WordPress dan # END WordPress agar permalink diselesaikan ke index.php bukannya 404.

Apa kode .htaccess default WordPress yang tepat? RewriteEngine On, RewriteBase /, aturan lolos untuk index.php, dua kondisi yang memeriksa bahwa permintaan bukan file atau direktori nyata, dan aturan terakhir yang mengirim semua sisanya ke index.php. Blok lengkapnya ada di awal panduan ini.

Mengapa semua artikel saya 404 kecuali halaman depan? Halaman depan bisa ditemukan tanpa aturan rewrite apa pun; setiap permalink lain membutuhkannya. .htaccess yang hilang atau rusak di Apache menghasilkan pola ini secara tepat.

Apakah WordPress membuat ulang .htaccess secara otomatis? Hanya jika file bisa ditulisi — menyimpan ulang Pengaturan > Permalink memicu ini. Jika file tidak bisa ditulisi, hilang di hosting yang tidak menghasilkannya secara otomatis, atau AllowOverride dimatikan, WordPress tidak bisa memperbaikinya untuk Anda dan Anda harus membuat atau memperbaiki file secara manual.

Mengapa nginx tidak memiliki file .htaccess WordPress? .htaccess hanya berfungsi di Apache dan LiteSpeed. nginx tidak memiliki file konfigurasi per-direktori dan sepenuhnya mengabaikan .htaccess; routing yang sama ditulis sebagai aturan try_files di blok server nginx.

Mengapa .htaccess saya rusak setelah menyimpan permalink? Aturan khusus ditempatkan di dalam marker # BEGIN WordPress / # END WordPress bukan di atasnya, dan WordPress menimpa seluruh bagian itu saat penyimpanan permalink berikutnya.


Bangun ulang .htaccess yang bersih dan benar — blok permalink default plus aturan keamanan atau redirect apa pun yang benar-benar Anda butuhkan — dengan generator .htaccess WordPress gratis.

FAQ

Pertanyaan

Apa itu file .htaccess default WordPress?

Ini adalah blok RewriteEngine singkat yang ditulis WordPress ke dalam .htaccess di root situs agar permalink berfungsi. Blok ini berada di antara komentar # BEGIN WordPress dan # END WordPress, dan mengarahkan setiap permintaan yang bukan file atau folder nyata ke index.php, tempat WordPress memutuskan apa yang ditampilkan.

Apa kode .htaccess default WordPress yang tepat?

RewriteEngine On, RewriteBase /, aturan yang membiarkan file dan direktori yang sudah ada lewat tanpa diubah, dan RewriteRule terakhir yang mengirim semua sisanya ke index.php sambil mempertahankan query string. Blok lengkapnya ada di bawah dan sama dengan yang dihasilkan WordPress sendiri di Pengaturan > Permalink.

Mengapa semua artikel saya 404 kecuali halaman depan?

Ini adalah gejala klasik dari .htaccess yang hilang atau rusak di Apache. Halaman depan tetap dimuat karena server bisa menemukan index.php secara langsung, tetapi setiap permalink lain membutuhkan aturan rewrite untuk sampai ke sana, dan tanpa itu Apache hanya mencari file yang tidak ada dan mengembalikan 404.

Apakah WordPress membuat ulang .htaccess secara otomatis?

Hanya saat file bisa ditulis dan Anda menyimpan ulang Pengaturan > Permalink. WordPress memeriksa apakah bisa menulis ke file tersebut, dan jika bisa, menulis ulang blok di antara markernya. Jika file hilang, hanya bisa dibaca, atau dimiliki pengguna lain selain yang menjalankan PHP, WordPress gagal secara diam-diam dan Anda harus membuatnya sendiri.

Mengapa nginx tidak memiliki file .htaccess WordPress?

Karena .htaccess adalah fitur Apache (dan LiteSpeed); nginx tidak memiliki setaranya dan sepenuhnya mengabaikan file tersebut. Di nginx, logika routing yang sama ditulis sebagai direktif try_files dalam blok server, yang hanya bisa diedit oleh host Anda atau admin sistem.

Mengapa .htaccess saya rusak setelah menyimpan permalink?

Hampir selalu karena plugin atau pengeditan manual sebelumnya menempatkan aturan sendiri di dalam marker WordPress, bukan di atasnya. WordPress menimpa semua yang ada di antara # BEGIN WordPress dan # END WordPress setiap kali permalink disimpan, jadi aturan apa pun yang ditempatkan di dalamnya terhapus tanpa peringatan.