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

  1. Yeniden Yazım Motorunu Aktif Hale Getirin: Öncelikle, yazım motorunun açıldığından emin olun.

    RewriteEngine on
    
  2. Koşulu Ayarlayın: İsteğin /audio yolu için olmadığını kontrol etmek üzere REQUEST_URI değişkenini kullanın.

    RewriteCond %{REQUEST_URI} !^/audio
    
  3. 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!