IIS Rewrite ve Olası Hatalar

7 Mar

IIS üzerinde bulunan Rewrite modülü, URL için yeniden yazma diye adlandırılan kuralları uygulamayı sağlar.

  • Dış dünyaya açık olmayan iç sunuculara erişimin kontrolü
  • Kurumunuzdan tek bir IP üzerinden erişim sağlanabilen URL adreslerine erişimin çoğaltılabilmesi ve güvenlik altına alınabilmesi

gibi bir dizi kuralların uygulanması URL Rewrite modülü ile gerçekleştirilebilir. Bunun için IIS üzerinde bir Web site veya bir web site içerisine oluşturulan bir uygulama üzerinden bu kurallar tanımlanabilir.

Kurallar IIS arayüz ekranından tanımlanabildiği gibi, web sitesi dizininde bulunan Web.config dosyasında de tanımlanabilmektedir. Zaten arayüzden yapılan ayarlar da Web.config içerisine yazılmaktadır.

Örnek Kurallar

Bu kurallara göre,

  • Kuralı uyguladığınız siteye, örneğin http://uygulama.com/api şeklinde gelen talepler http://172.16.10.11/api adresine yönlendirilir.
  • http://uygulama.com/api?a=1&b=2 ile gelen querystring parametreleri aynı şekilde yönlendirmeye taşınır.
  • http://172.16.10.11/api adresindeki api, basic authentication ile doğrulama gerektiriyor. Kullanıcı adı ve şifre bilgileri Base64 string olarak kodlanıp sunucu değişkeni(server variable) olarak eklenmektedir.

Server Variable Hatası

Kurallara ServerVariables eklendiğinde karşılaşılabilecek olası hatlardan biri 500 internal error olacaktır.

Hata sayfasında hata hakkında detaylı bilgi bulunmamaktadır. Detaylı bilgileri alabilmek için Web.config içerisinde hata aşağıdaki ayarları yapabilirsiniz.

<system.webServer>    
   <httpErrors errorMode="Detailed" />     
</system.webServer> 
<system.web>     
    <customErrors mode="Off"/>
</system.web>

Bu ayarlamadan sonra hata detaylarını şu şekilde görebilirsiniz.

HTTP Error 500.50 – URL Rewrite Module Error.

The server variable “HTTP_Authorization” is not allowed to be set. Add the server variable name to the allowed server variable list.

Hata detayına göre Server Variable olarak kullanılacak bilginin IIS web sitesinde önceden belirtilmesi gerekmektedir. Bunun için URL Rewrite penceresinde, sağ taraftaki View Server Variables kısmından HTTP_AUTHORIZATION değişkenini eklemelisiniz. Bu sayede URL Rewrite modülüne, Authorization header tanıtılmış olacak ve hata ortadan kalkacaktır.

Windows IIS üzerinde PHP çalıştırmak

20 Ağu

Windows platformu üzerinde PHP çalıştırmak için birkaç farklı yöntem vardır. Windows üzerine Apache, XAMPP gibi uygulama sunucuları kurmak bu yöntemlerden bazılarıdır. Ancak bir diğer yöntem, Windows platformunun kendi Web sunucu uygulaması olan IIS üzerinden PHP uygulamalarını çalıştırmaktır. Bu işlem için windows üzerine PHP yazılımının son sürümünü kurmak gerekmektedir. Bu işlemi Web Platform Installer aracı ile kolayca gerçekleştirebiliriz.

Microsoft Web Platform Installer aracını buradan indirebilirsiniz.

Web Platform Installer yüklendikten sonra IIS penceresinde Yönetim bölümünde logosu görünecektir.

IIS Logo
IIS Logo

Uygulamayı çalıştırdığımızda açılan pencerede arama kutusundan “PHP “şeklinde bir arama yaparak yüklenebilir durumdaki son sürümleri listeleyebiliriz.

PHP Son Sürüm
PHP Son Sürüm

Listeden istediğimiz versiyonu seçip kurulumu yaptıktan sonra PHP uygulamalarımız IIS üzerinden çalıştırabilir hale gelmiş olacaktır. Her ne kadar otomatik olarak yükleme yapılmış olsa da bazı kontrolleri yapmamız gerekmektedir. Bunlardan biri IIS ana penceresinden “İşleyici Eşleşmeleri” veya “Handler Mapping” menüsünden PHP handler eşleşmesi kontrol edilir. Grekli eşleşme yapılmışsa IIS artık PHP taleplerini yakalayıp çalıştırabiliyor demektir.

Windows üzerinde IIS çalıştırdığımız dizin (inetpub/www) içerisine bir php dosyası atarak testimizi gerçekleştirebiliriz.

NOT: Burada dikkat etmemiz gereken konulardan biri PHP ile daha önceden Apache gibi sunucularda çalışmış olanlar Apache’ye özgü özellikleri IIS üzerinde çalıştıramayacak olmasıdır. Örneğin .htaccess dosyası IIS üzerinde değerlendirilmez çünkü Apacahe tarafına ait bir özelliktir. Yada Apache HTTP sunucusu üzerinde oluşturulan bazı başlık (Hearder) bilgileri IIS üzerinde oluşturulmayabilir. Bu gibi konulara dikkat etmek gerekmektedir.