Apache’de mod_rewrite
ile Yönlendirmeyi Öğrenmek
Bir alan adından diğerine trafik yönlendirmesi yaparken belirli yollara erişimi korumanız gereken bir web sitesi yönetiyorsanız, Apache’deki mod_rewrite
en iyi arkadaşınız olabilir. Bu yazıda, /audio
gibi bir belirli yol harici tüm istekleri yönlendirmeyi nasıl yapacağımızı ele alacağız.
Problem
Birçok web yöneticisi, trafiği yeni bir alan adına yönlendirmeleri gerektiği ancak belirli isteklerin değişmeden geçmesine izin vermeleri gerektiği bir duruma düşer. Örneğin, mydomain.example
‘dan newdomain.example
‘a geçiş yapıyorsanız ve tüm trafiği /audio
istekleri haricinde yönlendirmek istiyorsanız, mod_rewrite
devreye girer.
Yaygın Sözdizimi Hataları
Bir kullanıcının yönlendirme kurulumu için yaptığı ilk deneme, karmaşık düzenli ifadeler ve ileri düzey koşullar kullanıyordu. Niyet doğruydu, ancak RewriteCond
içinde HTTP_HOST
kullanmak yanıltıcıdır çünkü istek yolunu içermez.
Çözüm
/audio
yoluna erişime izin verirken istenen yönlendirmeyi başarmak için Apache yapılandırmanız aşağıdaki gibi ayarlanmalıdır:
Adım Adım Yapılandırma
-
Yeniden Yazım Motorunu Aktif Hale Getirin: Öncelikle, yazım motorunun açıldığından emin olun.
RewriteEngine on
-
Koşulu Ayarlayın: İsteğin
/audio
yolu için olmadığını kontrol etmek üzereREQUEST_URI
değişkenini kullanın.RewriteCond %{REQUEST_URI} !^/audio
-
Yeniden Yazım Kuralını Tanımlayın: Yeni alan adına yönlendirmeyi gerçekleştiren bir kural oluşturun.
RewriteRule ^(.*)$ http://www.newdomain.example [L,R=301]
Hepsini Bir Araya Getirmek
VirtualHost
yapılandırmanız aşağıdaki gibi görünmelidir:
<VirtualHost *:80>
ServerAdmin me@mydomain.example
DocumentRoot "/var/www/mydomain.example/htdocs"
ServerName www.mydomain.example
ServerAlias mydomain.example
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/audio
RewriteRule ^(.*)$ http://www.newdomain.example [L,R=301]
RewriteLog /path/to/log/file
RewriteLogLevel 3
ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>
Yapılandırmanızı Hata Ayıklama
Bu ayarları yaptıktan sonra hâlâ sorunlarla karşılaşıyorsanız, koşulların ve kuralların nasıl çalıştığını görmek için günlük kaydını etkinleştirmeyi düşünün:
- İlgili detayları yakalamak için
RewriteLog
kullanarak bir günlük dosyası belirtin ve günlük seviyesini yeterince yüksek ayarlayın.
RewriteLog /path/to/log/file
RewriteLogLevel 3
Günlükleri Anlamak
Yukarıdaki kuralları uyguladıktan sonra günlükleri kontrol ettiğinizde, /audio
isteklerinin yeni yazım kuralına ulaşmadığından emin olun.
Sonuç
mod_rewrite
kullanarak URL yönlendirmesi kurmak, trafiği yönetmenin güçlü bir yolunu sunarken belirli yolların erişilebilir kalmasını sağlar. Doğru yapılandırmaya odaklanarak ve REQUEST_URI
davranışını anlayarak, istenmeyen yönlendirmelerle ilgili sorunları etkili bir şekilde çözebilirsiniz.
Bu rehberle, Apache’de URL yönlendirmelerini güvenle yönetme konusunda şimdi donanımlısınız. İyi kodlamalar!