Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

Apache mod_rewrite kuralları nasıl izlenir?​


Apache’de mod_rewrite kurallarını izlemek için ilgili sanal host veya sunucu yapılandırmasında LogLevel rewrite:traceN ayarını etkinleştirin. N yerine düşük bir trace seviyesiyle başlanır; trace2 üzeri yalnız kısa teşhis için kullanılır; ardından yapılandırmayı doğrulayıp Apache’yi yeniden yükleyin ve isteği yeniden gönderirken ErrorLog çıktısını izleyin. İşiniz bitince trace ayarını kaldırın veya normal seviyeye düşürün; yüksek trace seviyeleri çok fazla log üretir ve performansı etkileyebilir.

mod_rewrite izleme nasıl çalışır?​


mod_rewrite ayrıntılı kayıtlarını normal erişim günlüğüne değil, Apache hata günlüğüne yazar. rewrite:trace1 daha sınırlı, rewrite:trace3 ise kural eşleşmesi ve yönlendirme akışını incelemek için çoğu teşhis işleminde yeterli ayrıntıyı verir. Daha yüksek seviyeler iç değerlendirme ayrıntılarını artırır; yalnızca kısa süreli ve belirli bir istek üzerinde kullanılmalıdır.

Aşağıdaki parça Apache 2.4’te mevcut example.com VirtualHost yapılandırmasına kısa test için eklenir; bütün sanal host dosyasının yerine geçirilmez. Mevcut ErrorLog ve diğer ayarları koruyun:

Kod:
LogLevel warn rewrite:trace3
RewriteEngine On
RewriteRule ^/eski/(.*)$ /yeni/$1 [R=302,L]

VirtualHost içinde desenin karşılaştırdığı yol başında eğik çizgi taşır; bu nedenle ^/eski/ kullanılır. Aynı desen .htaccess kapsamına aynen taşınmaz; orada dizin öneki ve baştaki slash çıkarılır. Hata günlüğü için mevcut ErrorLog yolunu kullanın. R=302 burada kalıcı yönlendirme öncesi test amacıyla kullanılmıştır; kural doğrulandıktan sonra uygulamanızın gereksinimine göre kalıcı yönlendirme kararı verilebilir.

Uygulanabilir izleme adımları​


  1. Kuralın bulunduğu kapsamı belirleyin. Kural sanal host dosyasındaysa o sanal host’a, .htaccess içindeyse ilgili dizine ait Apache hata günlüğüne bakın. .htaccess içeriğinde doğrudan LogLevel tanımlamak yerine, bu ayarı Apache’nin izin verdiği sunucu, sanal host veya dizin yapılandırmasına ekleyin.
  2. İlgili yapılandırmaya geçici olarak LogLevel warn rewrite:trace3 ekleyin. Aynı yapılandırmada zaten bir LogLevel varsa onu ezmek yerine mevcut ayarla uyumlu biçimde rewrite:trace3 bileşenini ekleyin.
  3. Yapılandırmayı yeniden yüklemeden önce Apache’nin yapılandırma test komutunu çalıştırın. Test hata verirse yeniden yükleme yapmayın; bildirilen dosya ve satırdaki yazım hatasını düzeltin.
  4. Apache’yi kesintisiz yeniden yükleme yöntemiyle yeni ayarı etkinleştirin. Dağıtımınızın servis yönetim komutunu kullanın; yeniden başlatma yerine yeniden yükleme destekleniyorsa bunu tercih edin.
  5. Ayrı bir terminalde, kuralı tetikleyecek isteği gönderirken ilgili hata günlüğünü canlı izleyin. Örneğin curl -I http://example.com/eski/ornek isteği, yanıt başlıklarıyla birlikte yönlendirme sonucunu görmenizi sağlar.
  6. Log satırlarını istek yolu, kural numarası, eşleşme ve oluşan yeni URI açısından okuyun. Yönlendirme varsa istemcinin aldığı Location başlığını da kontrol edin.
  7. Teşhis tamamlanınca başlangıçta kaydettiğiniz LogLevel ayarını geri yükleyin ve Apache’yi yeniden yükleyin. İzleme açık bırakılırsa hata günlüğü gereksiz biçimde büyüyebilir.

Başarılı bir eşleşmede trace çıktısında kuralın değerlendirildiğini ve yeni URI veya yönlendirme sonucunu görürsünüz. İstek beklenmedik biçimde değişmiyorsa kural deseni eşleşmiyor olabilir. Hiç trace satırı oluşmuyorsa yanlış hata günlüğünü izliyor, farklı bir sanal host’a istek gönderiyor, mod_rewrite’ı etkinleştirmemiş veya değişikliği yeniden yüklememiş olabilirsiniz.

Çıktıyı yorumlama ve doğru trace seviyesini seçme​


İzleme seviyesini gereğinden yüksek seçmek yerine, sorunun türüne göre başlayın:

İhtiyaçBaşlangıç seviyesiBakılacak bilgi
Kural tetikleniyor mu?rewrite:trace1Rewrite işleminin istek sırasında çalışıp çalışmadığı
Hangi kural eşleşti?rewrite:trace2Kural değerlendirmesi ve URI değişikliği
Birden fazla kuralın akışırewrite:trace3Sıra, yeniden yazma ve yönlendirme adımları
Ayrıntılı iç teşhisrewrite:trace4 ve üstüYalnız kısa süreli, hedefli inceleme

Bir kuralın trace içinde görünmesi, sonucun uygulama tarafından doğru işlendiği anlamına gelmez. Örneğin iç yeniden yazma başarılı olabilir ancak uygulama yeni yolu bulamayabilir. Bu durumda trace çıktısını HTTP durum kodu, Location başlığı, erişim günlüğü ve uygulamanın kendi hata kaydıyla birlikte değerlendirin.

Sık yapılan hatalar​


Yanlış log dosyasını izlemek: İstek başka bir sanal host’a gidiyorsa beklediğiniz dosyada kayıt oluşmaz. Host adını ve sanal host eşleşmesini kontrol edin.

Kalıcı yönlendirmeyi test sırasında kullanmak: Tarayıcılar kalıcı yönlendirmeyi önbelleğe alabilir. Kuralı doğrularken geçici bir yönlendirme kullanmak veya curl ile sonucu kontrol etmek daha sağlıklı teşhis sağlar.

Trace ayarını kalıcı bırakmak: Ayrıntılı log, yoğun trafikte hem disk kullanımını hem de teşhis edilebilirliği kötüleştirir. Testten sonra seviyeyi düşürün.

İç yeniden yazma ile yönlendirmeyi karıştırmak: İç yeniden yazma sunucu içinde URI’yi değiştirir; istemciye yeni adres bildirmez. R bayrağı ise istemciye HTTP yönlendirmesi gönderir. Bu farkı hem trace sonucunda hem de Location başlığında kontrol edin.

Sık sorulan sorular​


Trace çıktısı neden normal erişim günlüğünde görünmüyor?​


mod_rewrite’ın ayrıntılı teşhis kayıtları hata günlüğüne yazılır. Erişim günlüğü ise çoğunlukla istek, durum kodu ve yanıt boyutu gibi sonuç bilgilerini gösterir; bu nedenle iki günlüğü birlikte incelemek gerekir.

Sadece tek bir isteği izlemek mümkün mü?​


LogLevel ayarı genellikle bir yapılandırma kapsamındaki istekleri etkiler. Bu yüzden ayarı kısa süreli açın, isteği hemen tekrarlayın ve ardından kapatın. Yoğun üretim trafiğinde yüksek seviyeyi uzun süre açık bırakmayın.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.