Lamp Server ve mod_rewrite

Başlatan canosayan, 18 Nisan 2010 - 11:52:52

« önceki - sonraki »

0 Üyeler ve 4 Ziyaretçi konuyu incelemekte.

canosayan

Bu konuyu bir projede kullanmak için biraz bakınmıştım. Kullanacağım gün geldi bende son bir kez daha bakayım dedim.

Malum tekrar açıp son lamp-server'ımda da bu işi yapmışken yazmazsam olmazdı.

Şimdi kısaca mod_rewrite nedir onu açıklayayım. Bunun içinde örnek vereyim. Mesela wordpress'i örnek alalım. Bazı wordpressler de adres satırının şu şekilde olduğunu görürsünüz.

http://sudo.ubuntu-tr.net/?p=herhangi_bir_yazı_id_numarası

Fakat aralarına bizim sudonun da dahil olduğu wordpresslerin şu şekilde adres satırları kullandığını görürüz.

http://sudo.ubuntu-tr.net/sayilar/sudo-sayi-18-16-nisan-2010/

Burada göreceğiniz üzere yazının id si yerine başlığını görüyoruz. Bu hem kullanıcıların yazıları hatırlamasını sağlar, hem de seo çalışması sayılır.

Tabi bunun smf, wiki ve bir çok betik ile de yapmak mümkün.

Şimdi bu işlemi nasıl yapıyoruz ona gelelim. Her şeyden önce elimizde kurulu bir lamp server olmalı. bunun için yine bu bölümdeki dökümanlardan faydalanabilirsiniz. Ayrıca wiki de bu konuda yetenekli sayılır.

Bir lamp-server kurduğunuzda bazı modüllerin kurulu gelmesine rağmen, mod_rewrite gelmiyor. Fakat kurmak hiç zor değil.
Öncelikle virtual hosts dosyamızın yedeğini alalım.
sudo cp '/etc/apache2/sites-available/default'  '/etc/apache2/sites-available/default.yedek'


Buradaki default ifadesi lamp server ile gelen standart dosya. Eğer siz bunu değiştirdi iseniz komuttaki ifadeleri değiştirmeniz gerekiyor.

Bu işlemden sonra, asıl işi yapan komutu veriyoruz.
sudo a2enmod rewrite
a2enmod istediğimiz modülleri sunucumuza ekleyen ufak bir uygulama.

Bu işlemi de yaptıktan sonra  az önce yedeklediğimiz yapılandırma dosyamızı düzenlememiz gerekli. Bunun için şu komutu vererek dosyamızı yönetici haklarıyla açmamız lazım.

sudo gedit '/etc/apache2/sites-available/default' 

Dosyayı gedit ile açtıktan sonra içerisindeki tüm AllowOverride None ifadelerini AllowOverride All ile değiştirerek dosyamızı kaydediyoruz.

En son yapacağımız iş ise apache sunucusunu yeni ayarlarla tekrarr başlatmak. Bunun için şu komutu vermemiz gerekiyor.
sudo /etc/init.d/apache2 restart

Eğer bu komut fail ile değil ok ifadesi ile dönüyorsa her şey tamam. Artık yönlendirme noktasına gelebiliriz.

Bu iş .htaccess dosyaları kullanıyoruz. Bu dosyalar gizli oldukları için görünmediklerinden sunucumuzun klasörü içerisinde ctrl+h ile görünür kılıyoruz. Eğer yoklarsa oluşturuyoruz. Genelde hazır sistemler kendileri bu dosyalarını getiriyor. Fakat tabi sizin kendi projelerinizi geliştirmeniz imkansız değil.

Bun dosyanın başına yönlendirme yapacağımızı anlatmak için bir şeyler yazmamız lazım. Oda şu iki kelime.
Alıntı YapRewriteEngine on

Daha sonra yönlendirme kurallarını yazıyoruz. Örneğin,

Alıntı YapRewriteRule ^index1.htm$ index2.htm

Bu şart ile sunucudaki index1.htm linkini index2.htm e yönlendirdik.

Tabi index1 i index 2 ye yönlendirmek çok büyük bir marifet değil. dosyanın adını da değiştirebilirdiniz. Bu kısımları daha faklı koşullar ile daha yetenekli yönlendirmeniz biraz sizin marifetinize kalıyor. Bu kısımda düzenli ifadeler kukllanarak çok rahat yönlendirme yapabilirsiniz. Düzenli ifadeler ne derseniz şurada e-bergi'ye ait güzel bir yazı var.




Chmod bizim işimiz.

eribol

Güzel bir kaynak olmuş. Kullanabileceğim durum olur mu bilmem ama forumda yardımı baya dokunur.

garafatma

Merak ettiğim bir konuydu, eline sağlık @canosayan
Bira, Tanrı'nın bizi sevdiğinin ve eğlenmemizi istediğinin kanıtıdır.

>-- Askıdaki Çeviri --< Ubuntu Türkçe Çevirilerine Sizde Destek Olun
Elveda metal müziğin tanrısı... \m/ Ronnie James DIO: 1942 - 2010

canosayan

Alıntı yapılan: keiser_soze - 19 Nisan 2010 - 11:02:52
Merak ettiğim bir konuydu, eline sağlık @canosayan
ne demek. araştırıp öğrendiğime göre yazmazsam olmazdı.
Chmod bizim işimiz.

Felâsife

Maceraya hazır mısın!  Bir BSD almaz mısın?

Raskopat

#5
Emeğinize sağlık hocam...

s7e7v7e7n

kodu yazdım şöyle bir çıktı ile karşılaştım.

sudo: a2enmod: command not found


daha yeni XAMPP kurdum anlamadım gitti nedir bu sürekli sorunla boğuşup duruyoruz böyle.

pc acılıncada sürekli olarak otomatik apache çalışmıyor, sürekli konsol dan çalıştırmak zorunda kalıyorum.
Ubuntu Desktop 11.10 Oneiric Ocelot

heartsmagic

@s7e7v7e7n, sen önce bir XAMMP, LAMPP meselesini hallet, olmadı tekrar konuşalım bu konuyu.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

canosayan

@s7e7v7e7n bir yerlerde lamp kurulumu olacaktı. bir ona bakın derim bende. zaten a2enmod sanki apache ile doğrudan gelmeli. bir kurulum eksikliğiniz var gibi.
Chmod bizim işimiz.

onparmakfklavye

Merhaba xubuntu 14.04 de
sudo geany '/etc/apache2/sites-available/default'   
dediğimde dosya boş olarak geliyor.

AllowOverride ifadesi bir üst dizindeki apache2.conf dosyasında da geçiyor.
All yapmak için hangi dosyayı nasıl düzenleyeceğimi bilemedim?

matrax_41

@onparmakfklavye, sites-available dizinindeki apache2.conf dosyasında yapacaksın ilgili değişikliği.

onparmakfklavye

iste orada yani sites-available da apache conf yok, bi ust dizinde duruyor.
Default confun da ici bos

matrax_41

Pardon sites-available'de değil direkt /etc/apache2 klasörünün içindeymiş apache2.conf dosyası.

onparmakfklavye

teşekkkürler zaten değiştirmiştim ama emin olamamıştım :)