.Htaccess dosyasında yeniden yazma kurallarının etkili olması için apache'yi yeniden başlatmanız gerekiyor mu?


99

.Htaccess dosyalarımı üretim sunucularına gönderdim, ancak çalışmıyorlar. Yeniden başlatma bir sonraki adım mıydı yoksa başka bir şeyi kontrol etmeli miyim?

Yanıtlar:


95

Bir yeniden başlatma edilir değil .htaccess değişiklikler için gerekli. Bir sorun daha var.

.Htaccess'inizin ifadeyi içerdiğinden emin olun

RewriteEngine açık

httpd.conf dosyasında da mevcut olsa bile bu gereklidir. Ayrıca .htaccess'in httpd işlemi tarafından okunabilir olduğunu kontrol edin.
Error_log dosyasını kontrol edin - eğer kullanılıyorsa .htaccess içindeki hataları size söyleyecektir . .Htaccess'e kasıtlı bir sözdizimi hatası koymak, dosyanın kullanıldığından emin olmak için iyi bir kontroldür - aynı dizindeki herhangi bir sayfada bir 500 hatası almalısınız.

Son olarak, httpd.conf dosyanızda aşağıdaki gibi komutları kullanarak bir yeniden yazma günlüğünü etkinleştirebilirsiniz:

RewriteLog "günlükleri / yeniden yazma günlüğü"

RewriteLogLevel 7

Bu şekilde oluşturulan günlük dosyası, size hangi yeniden yazma kurallarının eşleştiği ve bunların nasıl işlendiği konusunda kanlı ayrıntılar verecektir.


3
Bu biraz modası geçmiş. Benzer bir sorunla karşılaştım ve belirli bir kullanım durumu için yeniden yazdıklarımda hata ayıklamak istedim. Bu yöntemi denedim, ancak biraz hayal kırıklığı ve kazıdan sonra sorunun ne olduğunu anladım. Bu apache'nin eski sürümleri içindir. Apache2.4 için> ile yukarıda RewriteLog & LogLevel değiştirin: LogLevel alert rewrite:trace7. Apache'yi yeniden başlattıktan sonra , error.log'daki izleri görmelisiniz. Umarım yardımcı olur. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
Casper Wilkes

Debian, WSL üzerinde apache 2.4 kullanıyorum ve httpd yapılandırmam yok. Htaccess'im tanınmıyor.
Timo

52

Hayır :

Apache, web ağacının içine yerleştirilmiş özel dosyalar aracılığıyla yapılandırmanın merkezi olmayan yönetimine izin verir. Özel dosyalar genellikle çağrılır .htaccess, ancak AccessFileName yönergesinde herhangi bir ad belirtilebilir ... .htaccess dosyaları her istekte okunduğundan, bu dosyalarda yapılan değişiklikler anında geçerli olur ...


Kullanıcı adını sitelerin etkin olduğu dosyanıza 'Kullanıcı gerektir' bölümüne eklediyseniz, deneysel olarak yeniden başlatmanız gerektiğini buldum. Zarif olan bunu yapar.
Ross

18

Apache belgelerinden: En yaygın olarak sorun, AllowOverride'ın yapılandırma yönergelerinize uyulacak şekilde ayarlanmamasıdır. Söz konusu dosya kapsamı için bir AllowOverride None etkin olmadığından emin olun. Bunun için iyi bir test, .htaccess dosyanıza çöp atmak ve yeniden yüklemektir. Bir sunucu hatası oluşturulmazsa, neredeyse kesinlikle AllowOverride None etkindir.


1
Apache bağlantısını Damlama - AllowOverride: httpd.apache.org/docs/2.2/mod/core.html#AllowOverride
scunliffe

2
Günlükte bir hata oluşturmak için .htaccess'ime bu "<dizin /> </directory>" satırını ekliyorum. "<Dizine burada izin verilmiyor" yazacak ve dosyamı okuduğunu biliyorum.
Mnebuerquo

3

Eğer Yalnızca eğer değil Apache mod_rewrite modülü eklendi.

Herhangi bir Apache ".conf" dosyasını değiştirirseniz, yalnızca Apache'yi yeniden başlatmanız gerekir.


2

Aynı sorunu yaşıyorum ve PiedPiper'ın AllowOverride hakkındaki gönderisinin en yararlı olduğu görülüyor. Httpd.conf dosyanızda "AllowOverride" olup olmadığını kontrol edin ve All olarak ayarlandığından emin olun.



2

.Htaccess durumunda yeniden başlatma gerekli değildir eğer çalışmıyorsa olası nedenler içerir.

  • AllowOverride httpd.conf içinde hangi kullanıcının ayarlayabileceği veya sunucu yöneticisine başvurması gerekebileceği ayarlanamaz.

  • .Htaccess'in dosya adını kontrol edin, htaccess.txt değil .htaccess olmalıdır, nasıl oluşturulacağını öğrenmek için buraya bakın .

  • Kullanım deneyin Options -Indexesya deny allda çalışma olup olmadığını tür basit direktifin görmek için.

  • tarayıcı önbelleğini her seferinde temizle, yeniden yönlendirmeler veya benzeri bir kural varsa, önceki yönlendirme önbelleğe alınmışsa, işler çalışmıyor gibi görünür.


0

.Htaccess'inizde neler var? RewriteRules? Mod_rewrite'ın kurulu ve etkin olduğunu kontrol edin.

Diğer şey? AllowOverride'ı o dizinde 'all' olarak ayarlamayı deneyin.

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.