Menü

IIS sunucu üzerinde Codeigniter permalink ayarları

9 Kasım 2017 - Programlama

Yine karşılaştığım bir sorunu sizinle paylaşmak üzere böyle bir yazı yazma kararı aldım.Windows server IIS nin bazı versiyonları php yi desteklese de Codeigniter projesi için biraz farklı ayarlar yapılmalıydı.

Php den aşina olduğumuz .htaccess dosyasını windows server da kullanamıyoruz ve bunun yerine Web.Config dosyasını uygun bir şekilde konfigre etmemiz gerekiyor. Online olarak .htaccess dosyasını Web.Config e dönüştüren siteler olmasına rağmen hata olmaktan kurtulamıyoruz. Kaynak bulunmayan bir konu olduğundan bu yaşadığım sorunu ve çözümü sizinle paylaşmak istiyorum.

Php nin codeigniter kütüphanesiyle geliştirdiğim proje site(kök dizin) ve panelden (/panel) oluşmakta. Sorun ise ; site için verilen izinler ve yönlendirmeler çalışırken alt klasördeki panelin linkleri çalışmıyordu. Bunu çözmek için kök dizine attığım Web.Config dosyasını aşağıdaki gibi ayarlamamız gerekiyor.

Panel için ve site için iki farklı kural(rule) ataması yaptım. name kısımları birbirinden farklı olmak koşuluyla istediğiniz gibi değiştirebilirsiniz. Conditions etiketiyle izinleri her ikisinde verdikten sonra  Site match url kısmında gördüğünüz gibi tüm istekleri ana dizindeki index e atarken, panel kısmı için yazdığımız rolde ise içinde panel geçen her isteği panel klasörü altındaki index e yolluyoruz. Böylece Rewrite Rules ayarlarımızı yapmış oluyoruz.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Index">
                    <match url="^(.*)$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
						<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/{R:1}" />
                </rule>
				
				 <rule name="panel">
                    <match url="^(.*)panel(.*)$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
						<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="panel/index.php/{R:1}" />
                </rule>
				
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Bugsuz günler dileğiyle ….  🙂

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir