Allow'u Ayarlama


161

Ben ayarlamak istiyorum AllowOverride allama nasıl yapacağımı bilmiyorum. Google'da arama yaparak aşağıdaki kodu buldum ve yapıştırdım .htaccess:

<Directory>
        AllowOverride All
</Directory>

Ama yapıştırdıktan sonra almaya başladım "Internal Server Error"

Birisi bana bu kodu nereye koyacağımı veya nasıl yapacağımı yönlendirebilir mi?


3
<Directory>Yönergesi bir yol bağımsız değişken gerektirir.
FKEinternet

Yanıtlar:


317

Ubuntu kullanıyorsanız, dosyayı düzenleyin /etc/apache2/apache2.conf(burada bir örneğimiz var /var/www):

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

ve olarak değiştirin;

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

sonra,

sudo service apache2 restart

sudo a2enmod rewriteModül yeniden yazmayı etkinleştirmek için de yapmanız gerekebilir .


55
Ayrıca kullanmam gerekiyordu sudo a2enmod rewrite, o zaman işe yaradı. Ubuntu 14.04 LTS'de. Umarım bazıları için faydalı olacaktır.
Jonauz

2
Garip ... Bunu yaptığımda dahili sunucu hatası alıyorum. Bu, /var/www/.htaccess adresinde bulunan .htaccess dosyasında bir hata olduğunu gösteriyor mu? Apache2 döndürüldüğünde, AllowOverride None öğesine geri dön, hatayı düzeltir, ancak URL'nin yeniden yazılmasına izin vermez.
o_O

Ubuntu 12.04'te. Bu dosyayı / etc / apache2 / sites-available / default yolunda
buldum

Bunu ayrı bir dosyadan nasıl geçersiz kılabilirim? Dosyamın IncludeOptional conf-enabled/*.confson satırında bir tane olduğunu görebiliyorum apache2.conf. Ancak bunun apache2.confyerine öncelik verildiği görülüyor .
JohnnyQ

Bu benim için sihri yapar. Şirketim debian sunucusunu wheezy'den jessie'ye güncelledikten sonra, apache'deki her şey çalışmayı durdurdu ve bunu ekledikten sonra her şey tekrar çalışmaya başladı.
periket2000

51

Temel amacı, AllowOverrideapache'nin ana yapılandırma dosyalarının (/ etc / apache2 / dizininde bulunan) yöneticisinin yapılandırmanın hangi bölümünün uygulamalar tarafından her yol için dinamik olarak değiştirilebileceğine karar vermesidir.

Sunucunun yöneticisi değilseniz, bu yöneticilerin sizin için izin verdiği AllowOverride Level'a bağlı olursunuz. Böylece bazı önemli güvenlik ayarlarını değiştirmenizi engelleyebilirler;

Ana apache yapılandırma yöneticisiyseniz AllowOverride None, .htaccess dosyalarına dayalı olarak bulduğunuz tüm google_based örneğini her zaman kullanmanız ve Directoryana yapılandırma dosyalarındaki bölümlere aktarmanız gerekir . İçeriğinde bir .htaccessdosya için .htaccess içeriği, yönerge ile /my/path/to/a/directoryaynıdır <Directory /my/path/to/a/directory>, tek fark .htaccessdinamik HTTP başına istek yapılandırması değişikliğinin web sunucunuzu yavaşlatan bir şey olmasıdır. Her zaman kontrolsüz statik bir yapılandırmayı tercih edin .htaccess(ve .htaccessdeğişikliklerle yapılan güvenlik saldırılarını da önlersiniz ).

Eğer kullandığınız örnekte arada <Directory>ve bu her zaman olacak yanlış, Dizin talimatları her zaman olduğu gibi bir yol içeren edilir <Directory />veya <Directory C:>veya <Directory /my/path/to/a/directory>. Ve tabii ki bu bir dizin talimatı gibi bir .htaccessa yerleştirilemez .htaccess, ancak bu dizinde bulunan bir dosyaya. Tabii ki değiştiremeyeceğiniz AllowOverridebir de .htaccessbu talimat yönetiyor olarak güvenlik seviyesini ait .htaccessdosyalar.


17

Git your_severpath/apache_ver/conf/ Dosyayı httpd.confNot Defteri'nde açın .

Bu satırı bulun:

#LoadModule vhost_alias_module modülleri / mod_vhost_alias.so

Karma sembolünü kaldırın:

LoadModule vhost_alias_module modülleri / mod_vhost_alias.so

Sonra şuraya git <Directory />

ve şu şekilde değiştirin:

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

Ardından yerel sunucunuzu yeniden başlatın.


İş bitmiş! Ty Efendim!
James Walker

6
NB Order allow,denyve Allow from allApache 2.2 ve öncesi içindir. Apache 2.4 ile, bu iki satır Require all granteddiğer cevaplarda gösterildiği gibi değiştirilir .
FKEinternet

13

Linux'ta, belge köküne erişimi rahatlatmak için aşağıdaki dosyayı düzenlemelisiniz:

/etc/httpd/conf/httpd.conf

Erişmek istediğiniz dizin düzeyine bağlı olarak, yönergeyi değiştirmeniz gerekir

AllowOverride None

için

AllowOverride All

Bu nedenle, / var / www / html dizinindeki dosyalara erişime izin vermek istediğinizi varsayarsak, aşağıdaki satırları şununla değiştirmelisiniz:

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

için

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

8
ve sonra sunucuyu yeniden başlatın
Daniel

.Htacces'imi yüzlerce kez kontrol ettikten sonra - çözüm buydu! Çok teşekkür ederim. Ben "all" apache yapılandırmasının varsayılan değer olduğunu düşündüm.
Matthias Kleine

Ayrıca, cevabınızda Linux'tan bahsetmek de iyi değil. Bu eski olsa da, sadece söylediğiniz şeyin Redhat tabanlı dağıtımlar için olduğunu açıklamak istiyorum
Chi.CJRajeeva Lochana

11

Linux kullanıyorsanız, dizinindeki kodu düzenleyebilirsiniz.

/etc/httpd/conf/httpd.conf

şimdi, burada kod satırını bul

# 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>

Değişim AllowOveride Hiçbiri için AllowOveride All

Şimdi başka herhangi bir işletim sistemi httpd.conf dosyasını bulmaya ve düzenlemeye çalışırsa .httacess dosyanızda dizinleriniz içindeki herhangi bir kuralı ayarlayabilirsiniz .


2015Nov18 1539 PST itibariyle, Google'da 'allowoverride' için arama yaptığımda, arama sonuçlarının üzerinde bunu gösteren bir kutu görüyorum: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

Diğer kullanıcıların burada .htaccess kullanımına izin vermek için kullanılan allowoveride yönergesinin kullanımı hakkında burada açıkladığı gibi. diğer kullanıcıların .htaccess yazma erişimi varsa, bunun yerine belirli modüllere izin vermek için allowoveride kullanın, hiçbir zaman allowoverride kullanmayın işaret etmek istiyorum.

Mesela AllowOverride AuthConfig mod_rewriteYerine

AllowOverride All

Çünkü mod_mime gibi modül sunucu tarafı dosyalarınızı düz metin olarak işleyebilir.


1
TEŞEKKÜR EDERİM!! Tam da aradığım şey buydu. Windwalker.com.au'yu windwanderer.com.au'ya yönlendirmek istiyorum ve bu yönergeyi bir .htaccess dosyasında ve DAHA FAZLA NOTLA izin vermeliyim. AllowOverride ALL işlevini her zaman koymak sunucularımın güvenliğini azaltır.
Jesse the Wind Wanderer

1

Ben de bu sorunu karşılamak ve çözümü aşağıdaki 2 adım olarak buldum: 1. Apache2 siteleri etkin klasörde, "AllowOverride all" ("tümü" değil "none" olmalıdır) dizin öğesinde düzenleyin 2. Www klasöründeki kohana projesinde "example.htaccess" ifadesini ".htaccess" olarak yeniden adlandırın

Ubuntu üzerinde yaptım. Size yardımcı olacağını umuyoruz.


0

SuSE Linux Kurumsal Sunucu

Doğru dosyayı düzenlediğinizden emin olun https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html

httpd.conf

Ana Apache sunucusu yapılandırma dosyası. Bu dosyayı değiştirmekten kaçının. Öncelikle include ifadeleri ve genel ayarlar içerir. Burada listelenen ilgili yapılandırma dosyalarındaki genel ayarların üzerine yazın. Sanal ana makine yapılandırmanızdaki ana bilgisayara özgü ayarları (belge kökü gibi) değiştirin .

Bu durumda vhosts.d/*.confdüzenlenmelidir


0

Ayrıca , web sunucusu yapılandırmalarının bir kısmındaki uyumsuzluk ve farklı ayarlarSSL nedeniyle bu doğru cevapları bazen aynı hata görülebilir . (Açıkçası .htaccessdosya kullanmadığınızda ).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.