Apache ile Statik Web Sayfalarını Anında Değiştirme
Kolaylığı
Tamamen statik HTML sayfalarından oluşan bir web sitesini bakımını yaparken, sık karşılaşılan bir zorluk, gerekli işlevsellik için dinamik değişikliklerin veya dış betiklerin nasıl dahil edileceğidir. Örneğin, Woopra gibi web analitik araçları, her sayfada JavaScript kodunu gömmeyi gerektirir; bu, çok sayıda statik dosya ile çalışırken zahmetli olabilir.
Bu blog yazısında, Apache’nin yeteneklerini kullanarak statik web sayfalarına dinamik unsurları etkili bir şekilde nasıl entegre edeceğimizi keşfedeceğiz.
Zorluk
Şu senaryolardan birinde bulunabilirsiniz:
- Tamamen statik HTML sayfalarınız var.
- Web analitiklerini takip etmek için bir JavaScript parçasını dahil etmeniz gerekiyor.
- Bu kodu her bir dosyaya eklemek pratik değil.
İlk düşünce, süreci otomatikleştirmek için Apache’nin sunucu tarafı içeriklerini (SSI) ve yeniden yazmaları kullanmak olabilir. Ancak, birçoğu tarafından keşfedildiği gibi, bu yaklaşım sık sık yetersiz kalmaktadır.
Örnek Çözüm Denemesi
İlk denemenizin basitleştirilmiş bir özeti şöyle:
-
Statik HTML sayfaları için istekleri yakalamak üzere Apache yapılandırmanızda
mod_rewrite
ayarladınız.RewriteEngine On RewriteCond %{REQUEST_URI} !=test.shtml RewriteCond %{IS_SUBREQ} false RewriteRule (.*)\.html test.shtml?$1.html
-
Gerekli JavaScript’i ve orijinal HTML içeriğini dahil etmesi beklenen
test.shtml
adında bir dosya oluşturduğunuz.<script type="text/javascript"> var XXXXid = 'xxxxxxx'; </script> <script src="http://xxxx.woopra.com/xx/xxx.js"></script> <!--#set var="page" value="$QUERY_STRING" --> <!--#include virtual="$page" -->
Ancak, istenen sonuca ulaşmanızı engelleyen sorunlarla karşılaştınız.
Çözüm
Statik dosyaları anında etkili bir şekilde değiştirmek için alternatif yöntem, mod_filter_ext
kullanmaktadır. Bu modül, dosyaların dış betikler aracılığıyla işlenmesini sağlar; böylece JavaScript veya diğer dinamik içerikleri sorunsuz bir şekilde ekleyebilirsiniz.
Çözümü Uygulama Adımları
-
Gerekli Apache Modülünü Etkinleştirin: Apache yapılandırmanızda
mod_filter_ext
modülünün etkinleştirildiğinden emin olun. Bu modül, belirli dosya türlerini işleyen harici filtre programlarını tanımlamanıza olanak tanır. -
Bir Dış Betik Oluşturun: JavaScript kodunuzu HTML sayfalarınıza enjekte edecek kısa bir Perl betiği yazın. İşte temel bir yapı:
while (<>) { s/<html>/\Q<script>....\E/; print $_; }
- Bu betik, gelen HTML dosyalarını okur ve belirli bir yer tutucuyu JavaScript kodunuzla değiştirir.
-
Apache’yi Betiği Kullanacak Şekilde Yapılandırın: HTML dosyaları için betiği kayıt etmek üzere Apache yapılandırma dosyanızı güncelleyin. Şöyle bir şey ekleyebilirsiniz:
SetOutputFilter EXT_FILTER FilterDeclare EXT_FILTER FilterProvider EXT_FILTER pulse html FilterChain EXT_FILTER Perl-script-name
-
Yapılandırmanızı Test Edin: Filtreyi ayarladıktan sonra, doğrudan statik HTML sayfalarınızdan birine erişin. JS kodu, artık çıktıda dinamik olarak dahil edilmelidir.
Ek Araçlar
- Alternatif olarak,
sed
gibi komut satırı araçlarını kullanarak benzer şekilde yer değişimleri yapabilirsiniz, ancak bir Perl betiğinin esnekliği uzun vadede daha fazla kontrol sağlayabilir.
Sonuç
Dinamik unsurları statik HTML sayfalarına entegre etmek zor olabilir, ancak doğru Apache modüllerini ve dış betikleri kullanarak, etkili bir şekilde gerçekleştirilebilir. mod_filter_ext
veya başka bir yöntem kullanmayı seçseniz de, hedef aynı kalır: iş akışınızı kolaylaştırırken sitenizi işlevsel tutmak.
Bu çözümü uygularken sorularınız olursa ya da zorluklarla karşılaşırsanız, bana ulaşmaktan çekinmeyin!