Saat ini saya menggunakan hosting dengan server lightspeed . Hosting mengatakan mod_rewrite
diaktifkan tetapi saya tidak bisa membuat skrip saya berfungsi di sana. Setiap kali saya mencoba mengakses URL, ia mengembalikan 404 - halaman tidak ditemukan .
Saya meletakkan kode yang sama di server lain yang berjalan dengan Apache. Ini bekerja di sana. Jadi saya kira, itu .htaccess
dan mod_rewrite
masalah.
Tetapi dukungan Hosting masih mendesak saya bahwa mod_rewrite mereka aktif, jadi saya ingin tahu bagaimana cara memeriksa apakah itu benar-benar diaktifkan atau tidak.
Saya mencoba untuk memeriksa phpinfo()
, tetapi tidak berhasil, saya tidak dapat menemukannya mod_rewrite
, apakah karena mereka menggunakan lightspeed
?
Apakah ada cara untuk memeriksanya? Tolong bantu saya. Terima kasih.
FYI:.htaccess
kode saya adalah
Options -Indexes
<IfModule mod_rewrite.c>
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
</IfModule>
Saya mencoba seperti ini juga
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
Tapi hasilnya sama.
sumber
Untuk memeriksa apakah modul mod_rewrite diaktifkan, buat file php baru di folder root server WAMP Anda. Masukkan berikut
phpinfo();
Akses file yang Anda buat dari browser Anda.
CtrlFuntuk membuka pencarian. Cari 'mod_rewrite'. Jika diaktifkan, Anda melihatnya sebagai 'Modul yang Dimuat'
Jika tidak, buka httpd.conf (file Apache Config) dan cari baris berikut.
#LoadModule rewrite_module modules/mod_rewrite.so
Hapus tanda pagar ('#') di awal dan simpan file ini.
Mulai ulang server apache Anda.
Akses file php yang sama di browser Anda.
Cari 'mod_rewrite' lagi. Anda seharusnya dapat menemukannya sekarang.
sumber
phpinfo()
"Server API" menunjukkan "CGI / FastCGI").phpinfo()
tidak akan mencantumkan modul yang diaktifkan. Jika demikian, lihat Cara memeriksa mod_rewrite di PHP CGI .Jika Anda menggunakan file konfigurasi host virtual, pastikan host virtual yang dimaksud memiliki arahan
AllowOverride All
seperti ini:Pada dasarnya, ini menyatakan untuk mengizinkan pemrosesan semua arahan .htaccess.
sumber
...
dalam<Directory ...>
? Apa yang harus saya taruh di sana? direktori tempat .htaccess berada?ServerName
, saya tidak mengubah nama direktori, setelah itu dan restart apache tidak apa-apa.Jika apache_get_modules () tidak dikenali atau tidak ada info tentang modul ini di phpinfo (); cobalah untuk menguji mod rewrite dengan menambahkan baris tersebut di file .htaccess Anda:
Dan mod_rewrite.php:
sumber
menghibur:
sumber
Jika
kembali
true
kemudian mod-rewrite diaktifkan.sumber
apache_get_modules()
Fungsi perdefined PHP mengembalikan daftar modul yang diaktifkan. Untuk memeriksa apakahmod_rewrite
diaktifkan, Anda dapat menjalankan skrip berikut di server Anda:Jika contoh di atas gagal, Anda dapat memverifikasi mod-rewrite menggunakan
.htaccess
file Anda .Buat
htaccess
file di root dokumen dan tambahkan rewriteRule berikut:Sekarang kunjungi http://example.com/HelloWorld , Anda akan diteruskan secara internal ke halaman /index.php situs Anda. Jika tidak, jika mod-rewrite dinonaktifkan, Anda akan mendapatkan error server Internel 500.
Semoga ini membantu.
sumber
.htaccess
?Anda dapat melakukannya di terminal, baik:
diambil dari 2daygeek
sumber
sudo
Ini berfungsi di CentOS:
Haruskah keluaran
rewrite_module (shared)
sumber
Jika kode ini ada di file .htaccess Anda (tanpa memeriksa mod_rewrite.c)
dan Anda dapat mengunjungi halaman mana pun di situs Anda dengan mendapatkan kesalahan server 500. Saya pikir aman untuk mengatakan bahwa penulisan ulang mod dihidupkan.
sumber
Anda dapat menggunakan fungsi php
dan periksa mod_rewrite
http://in2.php.net/apache_get_modules
sumber
Jika Anda menggunakan sistem linux, Anda dapat memeriksa semua modul aktif untuk apache2 (dalam kasus saya) di folder berikut: / etc / apache2 / mods-available
untuk mengetik:
ll -a
jika Anda ingin memeriksa modul yang tersedia untuk folder php (dalam hal ini php 7) /etc/php/7.0/mods-available
mengetik:
ll -a
sumber
buat saja halaman baru dan tambahkan kode ini
dan jalankan halaman ini kemudian temukan akan dapat mengetahui modul tersedia atau tidak jika tidak maka Anda dapat bertanya ke hosting Anda atau jika Anda ingin mengaktifkannya di mesin lokal maka periksa tutorial langkah demi langkah youtube ini terkait untuk mengaktifkan modul penulisan ulang di wamp apache https://youtu.be/xIspOX9FuVU?t=1m43s Ikon server Wamp -> Apache -> Modul Apache dan periksa opsi modul tulis ulang
sumber
Saya tahu pertanyaan ini sudah tua tetapi jika Anda dapat mengedit file konfigurasi Apache Anda ke
AllowOverride All
dariAllowOverride None
sumber
Anda hanya perlu memeriksa apakah file tersebut ada, dengan mengetik
cat /etc/apache2/mods-available/rewrite.load
Baris hasil tidak boleh dikomentari dimulai dengan
#
sumber
Kode ini berfungsi untuk saya:
sumber
Saya mengalami masalah yang sebenarnya, saya menyelesaikannya dengan mengklik struktur khusus, lalu menambahkan
/index.php/%postname%/
dan berhasilSemoga ini menyelamatkan seseorang dari stres yang saya alami karena menemukan apa yang salah dengannya.
sumber