Cara Mengatur AllowOverride semua

161

Saya ingin mengatur AllowOverride allTapi saya tidak tahu bagaimana melakukannya. Saya telah menemukan kode berikut dengan mencari di google dan menempelkannya di .htaccess:

<Directory>
        AllowOverride All
</Directory>

Tetapi setelah menempelkannya saya mulai menerima "Internal Server Error"

Adakah yang bisa membimbing saya ke mana harus meletakkan kode ini atau bagaimana melakukannya?

Munib
sumber
3
The <Directory>direktif membutuhkan argumen jalan.
FKEinternet

Jawaban:

317

Jika Anda menggunakan Ubuntu, edit file /etc/apache2/apache2.conf(di sini kami memiliki contoh /var/www):

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

dan mengubahnya menjadi;

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

kemudian,

sudo service apache2 restart

Anda mungkin perlu juga melakukannya sudo a2enmod rewriteuntuk mengaktifkan penulisan ulang modul.

Naveed
sumber
55
Saya juga perlu menggunakan sudo a2enmod rewrite, maka itu berhasil. Di Ubuntu 14,04 LTS. Semoga bermanfaat bagi seseorang.
Jonauz
2
Aneh ... ketika saya melakukan ini saya mendapatkan kesalahan server internal. Apakah ini menunjukkan kesalahan pada file .htaccess yang terletak di /var/www/.htaccess? Menghidupkan apache2, konf kembali ke AllowOverride Tidak ada yang memperbaiki kesalahan tetapi tidak mengizinkan penulisan ulang URL.
o_O
Di Ubuntu 12.04. Saya menemukan file ini di / etc / apache2 / sites-available / path default
عثمان غني
Bagaimana saya bisa menimpanya dari file terpisah? Saya dapat melihat bahwa ada IncludeOptional conf-enabled/*.confdi baris terakhir apache2.conffile saya . Tapi sepertinya itu yang apache2.confdiprioritaskan.
JohnnyQ
Ini melakukan keajaiban bagi saya. Setelah memperbarui server debian perusahaan saya dari wheezy ke jessie, semua yang ada di apache berhenti berfungsi dan setelah menambahkan ini, semuanya mulai berfungsi lagi.
periket2000
51

Tujuan utama dari AllowOverrideadalah untuk pengelola file konfigurasi utama apache (yang ditemukan di / etc / apache2 / terutama) untuk memutuskan bagian mana dari konfigurasi yang dapat diubah secara dinamis berdasarkan per-path berdasarkan aplikasi.

Jika Anda bukan administrator server, Anda bergantung pada Tingkat AllowOverride yang diizinkan oleh admin tesis ini untuk Anda. Sehingga mereka dapat mencegah Anda untuk mengubah beberapa pengaturan keamanan penting;

Jika Anda adalah pengelola konfigurasi master apache, Anda harus selalu menggunakan AllowOverride Nonedan mentransfer semua contoh google_based yang Anda temukan, berdasarkan file .htaccess ke Directorybagian pada file konfigurasi utama. Sebagai konten .htaccess untuk .htaccessfile dalam /my/path/to/a/directorysama dengan <Directory /my/path/to/a/directory>instruksi, kecuali bahwa .htaccessperubahan konfigurasi dinamis per-permintaan-HTTP adalah sesuatu yang memperlambat server web Anda. Selalu lebih suka konfigurasi statis tanpa .htaccesspemeriksaan (dan Anda juga akan menghindari serangan keamanan dengan .htaccessperubahan).

Ngomong-ngomong dalam contoh yang Anda gunakan <Directory>dan ini akan selalu salah, instruksi Direktori selalu mengandung lintasan, seperti <Directory />atau <Directory C:>atau <Directory /my/path/to/a/directory>. Dan tentu saja ini tidak dapat dimasukkan .htaccesssebagai .htaccessseperti instruksi direktori tetapi dalam file yang ada di direktori ini. Tentu saja Anda tidak dapat mengubah AllowOverridedalam .htaccesskarena instruksi ini adalah mengelola tingkat keamanan dari .htaccessfile.

regilero
sumber
17

Goto your_severpath/apache_ver/conf/ Buka file httpd.confdi Notepad.

Temukan baris ini:

#LoadModule vhost_alias_module modules / mod_vhost_alias.so

Hapus simbol hash:

LoadModule vhost_alias_module modules / mod_vhost_alias.so

Lalu goto <Directory />

dan ubah ke:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Kemudian restart server lokal Anda.

Achintya Nayak
sumber
Pekerjaan selesai! Ty Sir!
James Walker
6
NB Order allow,denydan Allow from alluntuk Apache 2.2 dan sebelumnya. Dengan Apache 2.4, kedua baris digantikan oleh Require all grantedseperti yang ditunjukkan pada jawaban lain.
FKEinternet
13

Di Linux, untuk mengendurkan akses ke root dokumen, Anda harus mengedit file berikut:

/etc/httpd/conf/httpd.conf

Dan tergantung pada level direktori yang Anda inginkan untuk bersantai, Anda harus mengubah arahan

AllowOverride None

untuk

AllowOverride All

Jadi, dengan asumsi Anda ingin mengizinkan akses ke file di direktori / var / www / html, Anda harus mengubah baris berikut dari:

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

untuk

<Directory "/var/www/html">
 AllowOverride All
</Directory>
Javier La Banca
sumber
8
dan restart server setelah
Daniel
Setelah seratus kali memeriksa ulang .htacces saya - ini solusinya! Terima kasih banyak. Saya pikir, "semua" adalah nilai default dari konfigurasi apache.
Matthias Kleine
Juga, menyebutkan Linux dalam jawaban Anda tidak baik. Meskipun ini sudah tua, saya hanya ingin menjelaskan bahwa apa yang Anda katakan adalah untuk distro berbasis Redhat
Chi.CJRajeeva Lochana
11

Jika Anda menggunakan Linux, Anda dapat mengedit kode di direktori

/etc/httpd/conf/httpd.conf

sekarang, di sini cari baris kode yang agak mirip

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

Ubah AllowOveride None menjadi AllowOveride All

Sekarang sekarang Anda dapat mengatur segala jenis aturan dalam file .httacess Anda di dalam direktori Anda jika ada sistem operasi lain hanya mencoba mencari file dari httpd.conf dan mengeditnya.

SAR
sumber
Pada 2015Nov18 1539 PST, ketika saya mencari di Google untuk 'allowoverride', saya melihat kotak di atas hasil pencarian yang menunjukkan ini:now here fine the code line kinda like # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. #Sep 11, 2013 apache - How to Set AllowOverride all - Stack Overflow stackoverflow.com/questions/18740419/how-to-set-allowoverride-all
boot13
5

Seperti yang dijelaskan pengguna lain di sini tentang penggunaan direktif allowoveride, yang digunakan untuk memberikan izin pada penggunaan .htaccess. satu hal yang ingin saya tunjukkan bahwa jangan pernah menggunakan allowoverride semua jika pengguna lain memiliki akses untuk menulis .htaccess sebagai gantinya gunakan allowoveride untuk mengizinkan modul tertentu.

Seperti AllowOverride AuthConfig mod_rewriteAlih-alih

AllowOverride All

Karena modul seperti mod_mime dapat membuat file sisi server Anda sebagai teks biasa.

Abhishek Gurjar
sumber
1
TERIMA KASIH!! Ini persis apa yang saya cari. Saya ingin mengarahkan windwalker.com.au ke windwanderer.com.au dan karena itu saya perlu membolehkan arahan ini dalam file .htaccess dan TIDAK ADA LEBIH BANYAK. Selalu menempatkan AllowOverride SEMUA signifikan'y mengurangi keamanan server saya.
Jesse the Wind Wanderer
1

Saya juga menemui masalah ini, dan saya menemukan solusinya sebagai 2 langkah di bawah ini: 1. Dalam folder apache2 yang didukung situs, Anda mengedit dalam elemen Direktori dengan mengatur "AllowOverride semua" (harus "semua" bukan "tidak ada") 2. Dalam proyek kohana di folder www, ganti nama "example.htaccess" menjadi ".htaccess"

Saya melakukannya di ubuntu. Semoga itu akan membantu Anda.

Quang Le
sumber
0

SuSE Linux Enterprise Server

Pastikan Anda mengedit file yang tepat https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html

httpd.conf

File konfigurasi server Apache utama. Hindari mengubah file ini. Ini terutama berisi pernyataan pernyataan dan pengaturan global. Timpa pengaturan global dalam file konfigurasi terkait yang tercantum di sini. Ubah pengaturan khusus host (seperti root dokumen) di konfigurasi virtual host Anda .

Dalam hal demikian vhosts.d/*.confharus diedit

eskalator
sumber
0

Ditambah jawaban yang benar yang di-upgrade-kan kadang-kadang kesalahan yang sama dapat terlihat karena pengaturan yang tidak cocok dan berbeda pada SSLbagian dari konfigurasi server web . (Jelas saat tidak menggunakan .htaccessfile).

Mojtaba Rezaeian
sumber