beyfurkan610
Forum Üyesii
Htaccess’in en popüler kullanım alanlarından birisi budur. Ve sizin de en sevdiğiniz özelliklerinden birisi olacağına inanıyorum.
Bu olayı kullanmanın 2 ideal yöntemi var; birincisi önceden öğrendiğimiz GET metodu ile sayfa.php?sayfa=iletisim şeklinde, ya da POST metodu gibi “REQUEST_URI” ile kullanmak. Hangisi kolayınıza geliyorsa onu seçebilirsiniz fakat benim favorim “REQUEST_URI”den yana.
Yöntem 1: GET metodu kullanarak yapmak.
Öncelikle bir içerik sayfa.php‘miz olsun ve örnek amaçlı switch ile sayfaları tanımlayalım:
PHP Kod:
Şuan htaccess kullanmadan bu sayfamızı “sayfa.php, sayfa.php?sayfa=hakkinda, sayfa.php?sayfa=iletisim” şeklinde kullanabiliriz. Şimdi gelelim bunu kullanıcı dostu yapmamıza, bu kısımda kod kısmımızda herhangi bir şey değiştirmemize gerek yok.
Sitemizin ana dizinine “.htaccess” adında dosya oluşturuyoruz. Eğer FTP programınız ya da işletim sisteminiz böyle bir dosya oluşturmanıza izin vermiyorsa, not defterinden boş bir sayfa açıp kodları içerisine yazıp, farklı kaydet diyip, “Tüm dosyalar” seçeneğini seçip “.htaccess” yazıp bu dosyayı oluşturabilirsiniz.
İçerisine şu satırları yazıyoruz:
PHP Kod:
Bu işlemi yaptıktan sonra Htaccess; kullanıcılar eğer olmayan bir sayfaya girmeye çalışırlarsa, yani normalde /hakkinda ya da /iletisim gibi bir dizinimiz olmadığı için, 404 hata sayfasına değil de bizim sayfa.php dosyamıza yönlendirecek.
Fakat yönlendirirken girilmiş olan sayfayı bizim dosyamıza “sayfa” GET parametresi olarak gönderek. Yani bu şekilde site.com/deneme diye girildiğinde arkaplanda çalışacak olan sayfa “site.com/sayfa.php?sayfa=deneme” olacaktır.
Sonuç olarak yine aynı sistem çalışsa da kullanıcılar artık php dosyalarının adını ya da diğer GET parametresi uzantılarını yazmasına gerek kalmadan temiz ve akılda kalıcı bağlantılarla sitenizde gezebiliyor.
Yöntem 2: REQUEST_URI ile yapmak.
Diğer yöntemden tek farkı $_GET[‘sayfa’] yerine girilen adresi $_SERVER[‘REQUEST_URI’] ile okuyoruz. Fakat burada bize ilk baştaki “/” işaretini de veriyor (“/hakkinda” şeklinde). Bunun için ilk karekteri substr fonksiyonu ile atlıyoruz.
Yani kod kısmımızın ilk 5 satırını şöyle değiştireceğiz:
PHP Kod:
.htaccess dosyamızda da bu yöntem için bir satırlık değişiklik yapıyoruz, GET parametresi tanımladığımız kısmı siliyoruz:
PHP Kod:
Bu olayı kullanmanın 2 ideal yöntemi var; birincisi önceden öğrendiğimiz GET metodu ile sayfa.php?sayfa=iletisim şeklinde, ya da POST metodu gibi “REQUEST_URI” ile kullanmak. Hangisi kolayınıza geliyorsa onu seçebilirsiniz fakat benim favorim “REQUEST_URI”den yana.
Yöntem 1: GET metodu kullanarak yapmak.
Öncelikle bir içerik sayfa.php‘miz olsun ve örnek amaçlı switch ile sayfaları tanımlayalım:
PHP Kod:
Kod:
[COLOR=#007700]if(!isset([/COLOR][COLOR=#0000BB]$_GET[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'sayfa'[/COLOR][COLOR=#007700]])) { [/COLOR][COLOR=#FF8000]// eğer boşsa anasayfa varsayalım.[/COLOR]
[COLOR=#0000BB] $sayfa [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]'anasayfa'[/COLOR][COLOR=#007700];
} else {[/COLOR]
[COLOR=#0000BB] $sayfa [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]$_GET[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'sayfa'[/COLOR][COLOR=#007700]];
}[/COLOR]
[COLOR=#0000BB] [/COLOR]
[COLOR=#007700]switch([/COLOR][COLOR=#0000BB]$sayfa[/COLOR][COLOR=#007700]) {
case [/COLOR][COLOR=#DD0000]'iletisim'[/COLOR][COLOR=#007700]:[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<h2>İletişim</h2>'[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<p>Bize [email protected] adresinden ulaşın!</p>'[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<p><a href="/">Anasayfa</a></p>'[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] break[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] [/COLOR]
[COLOR=#007700]case [/COLOR][COLOR=#DD0000]'hakkinda'[/COLOR][COLOR=#007700]:[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<h2>Hakkında</h2>'[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<p>Bizi tanıyan tanır, yeniler örnek alır, tanımayanlar ibret alır.</p>'[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<p><a href="/">Anasayfa</a></p>'[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] break[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] [/COLOR]
[COLOR=#007700]case [/COLOR][COLOR=#DD0000]'anasayfa'[/COLOR][COLOR=#007700]:[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<h2>Sitemize hoşgeldiniz!</h2>'[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<p><a href="/hakkinda">Hakkında</a><br/>'[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<a href="/iletisim">İletişim</a></p>'[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] break[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] [/COLOR]
[COLOR=#007700]default: [/COLOR][COLOR=#FF8000]// hiç birisi değilse 404 varsayalim[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<h2>Bulunamadı!</h2>'[/COLOR][COLOR=#007700];[/COLOR]
[COLOR=#0000BB] echo [/COLOR][COLOR=#DD0000]'<p>Böyle bir sayfamız henüz yok, değiştirilmiş ya da silinmiş olabilir.</p>'[/COLOR][COLOR=#007700];
} [/COLOR]
Şuan htaccess kullanmadan bu sayfamızı “sayfa.php, sayfa.php?sayfa=hakkinda, sayfa.php?sayfa=iletisim” şeklinde kullanabiliriz. Şimdi gelelim bunu kullanıcı dostu yapmamıza, bu kısımda kod kısmımızda herhangi bir şey değiştirmemize gerek yok.
Sitemizin ana dizinine “.htaccess” adında dosya oluşturuyoruz. Eğer FTP programınız ya da işletim sisteminiz böyle bir dosya oluşturmanıza izin vermiyorsa, not defterinden boş bir sayfa açıp kodları içerisine yazıp, farklı kaydet diyip, “Tüm dosyalar” seçeneğini seçip “.htaccess” yazıp bu dosyayı oluşturabilirsiniz.
İçerisine şu satırları yazıyoruz:
PHP Kod:
Kod:
[COLOR=#0000BB]RewriteEngine On
RewriteBase [/COLOR][COLOR=#007700]/[/COLOR]
[COLOR=#0000BB]RewriteCond [/COLOR][COLOR=#007700]%{[/COLOR][COLOR=#0000BB]REQUEST_FILENAME[/COLOR][COLOR=#007700]} !-[/COLOR][COLOR=#0000BB]f
RewriteCond [/COLOR][COLOR=#007700]%{[/COLOR][COLOR=#0000BB]REQUEST_FILENAME[/COLOR][COLOR=#007700]} !-[/COLOR][COLOR=#0000BB]d
RewriteRule [/COLOR][COLOR=#007700]^(.*)$ [/COLOR][COLOR=#0000BB]sayfa[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]php[/COLOR][COLOR=#007700]?[/COLOR][COLOR=#0000BB]sayfa[/COLOR][COLOR=#007700]=$[/COLOR][COLOR=#0000BB]1 [/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]QSA[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]L[/COLOR][COLOR=#007700]] [/COLOR]
Bu işlemi yaptıktan sonra Htaccess; kullanıcılar eğer olmayan bir sayfaya girmeye çalışırlarsa, yani normalde /hakkinda ya da /iletisim gibi bir dizinimiz olmadığı için, 404 hata sayfasına değil de bizim sayfa.php dosyamıza yönlendirecek.
Fakat yönlendirirken girilmiş olan sayfayı bizim dosyamıza “sayfa” GET parametresi olarak gönderek. Yani bu şekilde site.com/deneme diye girildiğinde arkaplanda çalışacak olan sayfa “site.com/sayfa.php?sayfa=deneme” olacaktır.
Sonuç olarak yine aynı sistem çalışsa da kullanıcılar artık php dosyalarının adını ya da diğer GET parametresi uzantılarını yazmasına gerek kalmadan temiz ve akılda kalıcı bağlantılarla sitenizde gezebiliyor.
Yöntem 2: REQUEST_URI ile yapmak.
Diğer yöntemden tek farkı $_GET[‘sayfa’] yerine girilen adresi $_SERVER[‘REQUEST_URI’] ile okuyoruz. Fakat burada bize ilk baştaki “/” işaretini de veriyor (“/hakkinda” şeklinde). Bunun için ilk karekteri substr fonksiyonu ile atlıyoruz.
Yani kod kısmımızın ilk 5 satırını şöyle değiştireceğiz:
PHP Kod:
Kod:
[COLOR=#0000BB]$sayfa [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]substr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$_SERVER[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'REQUEST_URI'[/COLOR][COLOR=#007700]], [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#FF8000]// ilk "/" karakterini atlıyoruz.[/COLOR]
[COLOR=#007700]if(!empty([/COLOR][COLOR=#0000BB]$sayfa[/COLOR][COLOR=#007700])) { [/COLOR][COLOR=#FF8000]// eğer boşsa anasayfa varsayalım.[/COLOR]
[COLOR=#0000BB] $sayfa [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]'anasayfa'[/COLOR][COLOR=#007700];
} [/COLOR]
.htaccess dosyamızda da bu yöntem için bir satırlık değişiklik yapıyoruz, GET parametresi tanımladığımız kısmı siliyoruz:
PHP Kod:
Kod:
[COLOR=#0000BB]RewriteRule [/COLOR][COLOR=#007700]^(.*)$ [/COLOR][COLOR=#0000BB]sayfa[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]php[/COLOR][COLOR=#007700]?[/COLOR][COLOR=#0000BB]sayfa[/COLOR][COLOR=#007700]=$[/COLOR][COLOR=#0000BB]1 [/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]QSA[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]L[/COLOR][COLOR=#007700]][/COLOR]
[COLOR=#FF8000]// yerine[/COLOR]
[COLOR=#0000BB]RewriteRule [/COLOR][COLOR=#007700]^(.*)$ [/COLOR][COLOR=#0000BB]sayfa[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]php [/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]L[/COLOR][COLOR=#007700]] [/COLOR]