Bagaimana cara mengaktifkan mod_rewrite di Apache?

165

Saya baru saja menginstal tumpukan LAMP pada sistem Ubuntu saya.

Pengalihan tidak berfungsi untuk saya. Saya tidak tahu bagaimana cara memperbaikinya. Ada yang bisa bantu saya?

vinoth
sumber
3
IMHO pertanyaan ini bukan spesifik untuk Ubuntu dan harus dimigrasi ke Server Fault .
Paolo
2
OP memasang Lampu di UBUNTU. Berapa banyak lagi spesifik Ubuntu yang Anda inginkan?
wojox
1
@wojov: Saya tidak tahu tentang kasus ini, tetapi argumen itu tidak berhasil. "Bagaimana saya bisa menggunakan aplikasi ini (di Ubuntu)?" sebagian besar di luar topik.
23
Ini bukan "Bagaimana saya bisa menggunakan aplikasi", tetapi "bagaimana cara mengaktifkan fitur tertentu di Ubuntu". Apache di bawah Ubuntu menggunakan tata letak konfigurasi yang berbeda di mana setiap modul dan host virtual adalah file di /etc/apache2dalamnya dan yang dapat diaktifkan menggunakan a2*program.
Lekensteyn
Anda harus menggambarkan apa yang telah Anda lakukan untuk mempersempit masalah, itu
ericn

Jawaban:

239

Untuk mengaktifkannya modul penulisan ulang, jalankan "apache2 aktifkan modul penulisan ulang":

sudo a2enmod rewrite

Anda harus memulai ulang server web untuk menerapkan perubahan:

sudo service apache2 restart

Jika Anda berencana menggunakan mod_rewrite dalam .htaccessfile, Anda juga perlu mengaktifkan penggunaan .htaccessfile dengan mengubah AllowOverride Noneke AllowOverride FileInfo. Untuk situs default, mengedit /etc/apache2/sites-available/default:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

Setelah perubahan seperti itu, Anda harus memulai ulang Apache lagi.

Lekensteyn
sumber
18
Saya lebih sukses dengan AllowOverride All
Valentin Despa
Terima kasih! sudo a2enmod rewritedan FileInfomemperbaikinya untukku!
d -_- b
22
Bagi saya file itu adalah /etc/apache2/apache2.conf tempat saya menemukan entri konfigurasi itu
doc_id
Ya, buat dua perubahan untuk memperbaiki masalahnya.
Adelin
Itu tidak bekerja untuk saya. Saya mengirim pertanyaan di sini askubuntu.com/questions/809619/failing-to-rewrite-url
Suhail Gupta
49

Saya berani menambahkan jawaban khusus (sebagai tindak lanjut dari jawaban hebat di atas) tentang ubuntu 14.04 dan .htaccess:

Dalam 14,04, nama file konfigurasi default diubah menjadi 000-default.conf:

sudo gedit /etc/apache2/sites-available/000-default.conf

tambahkan yang berikut ke akhir file:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

Untuk beberapa alasan, di Ubuntu 14.04 dan apache2 root diatur ke /www/html. Jika Anda ingin mengubah root server web kembali ke yang lama /www, open 000-default.confdan ubah

DocumentRoot /var/www/html/

untuk

DocumentRoot /var/www/

dan tentu saja seharusnya

<Directory "/var/www">
    AllowOverride All
</Directory>
davidkonrad
sumber
1
Terima kasih untuk info! Ini / cara baru kita dapat menggunakan www sebagai folder tempat kita meletakkan semua situs web, dan html secara default "situs web" untuk localhost. Mungkin penting jika Anda bermain dengan membuka port ke dunia - dengan cara ini localhost Anda tidak dapat melihat folder proyek lain.
Vladimir Vukanac
1
Itu tidak bekerja untuk saya. Saya menggunakan Ubuntu 14.04.4 LTS
Suhail Gupta