Saya memiliki server dari layanan AWS EC2 yang berjalan di Linux ubuntu dan saya telah menginstal apache, php, dan mysql.
Saya telah menambahkan .htaccess
file di root dokumen saya /var/www/html
.
Saya memasukkan kode ini di dalamnya:
ErrorDocument 404 /var/www/html/404.php
dan masih belum muncul.
Saya terus memasukkan perintah ini beberapa kali: sudo service httpd restart
untuk memulai ulang server tetapi tidak ada perubahan yang ditampilkan ...
Bagaimana cara memperbaikinya ... Apakah saya melakukan sesuatu yang salah?
Terima kasih sebelumnya!
apache
.htaccess
amazon-ec2
amazon-web-services
apache-config
Shalin Shah
sumber
sumber
400 Bad Request
kesalahan ke/var/www/html/404.php
?Jawaban:
Pertama, perhatikan bahwa memulai ulang httpd tidak diperlukan untuk file .htaccess. File .htaccess khusus untuk orang yang tidak memiliki root - yaitu, tidak memiliki akses ke file konfigurasi server httpd, dan tidak dapat memulai ulang server. Karena Anda dapat memulai ulang server, Anda tidak memerlukan file .htaccess dan dapat menggunakan konfigurasi server utama secara langsung.
Kedua, jika file .htaccess diabaikan, Anda perlu memeriksa untuk melihat bahwa AllowOverride disetel dengan benar. Lihat http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride untuk detailnya. Anda juga perlu memastikan bahwa ini diatur dalam cakupan yang benar - yaitu, di blok kanan dalam konfigurasi Anda. Pastikan Anda TIDAK mengedit yang di blok, misalnya.
Ketiga, jika Anda ingin memastikan bahwa file .htaccess benar-benar dibaca, masukkan sampah ke dalamnya. Baris yang tidak valid, seperti "INVALID LINE HERE", dalam file .htaccess Anda, akan menyebabkan 500 Server Error saat Anda mengarahkan browser ke direktori yang berisi file tersebut. Jika tidak, Anda tidak memiliki AllowOverride dikonfigurasi dengan benar.
sumber
"A STRING"
.htaccess saya, jadi saya menerima kesalahan, jadi saya memasukkanAllowOverride All
semua keapache2.conf
Debian saya dan berhasilAllowOverride
hanya berfungsi dalam<Directory>
arahan dan akan diabaikan jika ditempatkan di dalam<Location ...>
bagian, lihat: httpd.apache.org/docs/2.4/mod/core.html#allowoverride<Directory>
direktif mengharapkan jalur absolut, bukan relatif. Dalam kasus saya,<Directory />
gagal saat<Directory /var/www/html/subdir>
bekerja.Aktifkan modul Apache mod_rewrite
a2enmod rewrite
tambahkan kode berikut ke
/etc/apache2/sites-available/default
AllowOverride All
Mulai ulang apache
/etc/init.d/apache2 restart
sumber
Jika Anda telah mencoba semua cara di atas, yang semuanya merupakan jawaban yang valid dan bagus, dan file htaccess Anda tidak berfungsi atau sedang dibaca ubah petunjuk di
apache2.conf
file tersebut. Di bawah Ubuntu jalurnya adalah/etc/apache2/apache2.conf
Ubah
<Directory>
petunjuk yang mengarah ke halaman web publik Anda, tempat file htaccess berada. Ubah dariAllowOverride None
menjadiAllowOverride All
Saya memiliki masalah yang sama dan menemukan jawaban dan penjelasannya di Ubuntu Ask! forum /ubuntu/421233/enabling-htaccess-file-to-rewrite-path-not-working
sumber
AllowOverride FileInfo
diperlukan di baris ke-3 agar.htaccess
file dapat dibaca dan digunakan.All
juga mengaktifkan penggantian konfigurasi tambahan, seperti.httpasswd
(yang dapat diaktifkan secara individual dengan menggunakanAuthconfig
alih-alihAll
).Untuk Ubuntu,
Pertama, jalankan perintah ini: -
Kemudian, edit file
/etc/apache2/sites-available/000-default.conf
menggunakan nano atau vim menggunakan perintah ini: -Kemudian di
000-default.conf
file, tambahkan ini setelah barisDocumentRoot /var/www/html
. Jika direktori root html Anda adalah yang lain, tulislah: -Setelah melakukan semuanya, restart apache menggunakan perintah
sudo service apache2 restart
sumber
Ikuti saja 3 langkah
Aktifkan mode_rewrite menggunakan perintah berikut
sudo a2enmod menulis ulang
Kata sandi akan ditanyakan. Jadi masukkan kata sandi Anda
Perbarui file 000-default.conf atau default.conf Anda yang terletak di direktori / etc / apache2 / sites-available / . Anda tidak dapat mengeditnya secara langsung. jadi gunakan perintah berikut untuk membuka
sudo gedit /etc/apache2/sites-available/000-default.conf
Atau sudo gedit /etc/apache2/sites-available/default.conf
kamu akan mendapatkan
ATAU
garis. Tambahkan kode berikut setelahnya.
Jadikan pengguna jalur tag direktori sama seperti yang ditunjukkan di file Anda.
Mulai ulang server apache Anda menggunakan perintah berikut
sudo service apache2 restart
sumber
Dalam pengalaman saya, / var / www / direktori direktif mencegah direktif virtualhost subfolder. Jadi jika Anda telah mencoba semua saran dan masih tidak berfungsi dan Anda menggunakan virtualhost, coba ini;
1 - Pastikan Anda memiliki
AllowOverride All
arahan/etc/apache2/sites-available/example.com.conf
2 - Periksa / var / www / Direktori di
/etc/apache2/apache2.conf
(mungkin di baris 164), yang terlihat seperti;Jika ada
AllowOverride None
arahan ubah menjadiAllowOverride All
atau escape line sajasumber
Kemungkinan besar, AllowOverride disetel ke None. di bagian Direktori apache2.conf yang terletak di folder / etc / apache2
Coba atur ke AllowOverride All
sumber
Secara default, Apache melarang penggunaan file .htaccess untuk menerapkan aturan penulisan ulang, jadi
Langkah 1 - Mengaktifkan mod_rewrite (jika tidak Diaktifkan) Pertama, kita perlu mengaktifkan mod_rewrite. Ini tersedia tetapi tidak diaktifkan dengan instalasi Apache 2 yang bersih.
Ini akan mengaktifkan modul atau mengingatkan Anda bahwa modul tersebut sudah diaktifkan. Untuk menerapkan perubahan ini, mulai ulang Apache.
mod_rewrite sekarang sepenuhnya diaktifkan. Pada langkah selanjutnya kita akan menyiapkan file .htaccess yang akan kita gunakan untuk mendefinisikan aturan penulisan ulang untuk pengalihan.
Langkah 2 - Menyiapkan .htaccess Buka file konfigurasi Apache default menggunakan nano atau editor teks favorit Anda.
Di dalam file itu, Anda akan menemukan blok yang dimulai dari baris pertama. Di dalam blok itu, tambahkan blok baru berikut sehingga file konfigurasi Anda terlihat seperti berikut. Pastikan semua blok diindentasi dengan benar.
/etc/apache2/sites-available/000-default.conf
Simpan dan tutup file. Untuk menerapkan perubahan ini, mulai ulang Apache.
Selesai. .Htacess Anda harus berfungsi. Tautan ini sebenarnya dapat membantu seseorang https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04
sumber
$ sudo httpd -k restart
(Red Hat 4.4.7-23)Saya menghapus penggunaan ini. Dengan menggunakan situs ini klik Di Sini , ikuti langkah-langkahnya, langkah-langkah yang sama mengikuti hingga ubuntu versi 18.04
sumber
Di
WampServer
ikon Open WampServer Tray ----> Apache ---> Apache Modules ---> rewrite_modulesumber
gunakan RewriteBase / {folder Anda} / di .htaccess Anda
sumber
Untuk kelengkapan, jika "AllowOverride All" tidak memperbaiki masalah Anda, Anda dapat men-debug masalah ini menggunakan:
Jalankan
apachectl -S
dan lihat apakah Anda memiliki lebih dari satu namevhost. Mungkin httpd sedang mencari .htaccess dari DocumentRoot lain.Gunakan
strace -f apachectl -X
dan cari dari mana asalnya memuat (atau tidak memuat) .htaccess.sumber
Buka /etc/apache2/apache2.conf
Anda harus mengedit file itu (Anda harus memiliki izin root). Ubah teks direktori seperti di bawah ini:
Sekarang Anda harus memulai ulang apache.
layanan apache2 restart
sumber