• Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha fazla bilgi edin.

Codeigniter Framework ile SEO Dostu Link Kullanımı

Konuyu Okuyan Kişiler (0)

NaMLu

webmaster.tc
Katılım
8 Ağu 2012
Mesajlar
171
Beğeniler
0
Konum
404 - Not Found
#1
Merhaba arkadaşlar CI Framework'ü kullananlar için link yapısını nasıl değiştirileceğini göstereceğim. Bu dersi elimden geldiğince başlangıç seviyesinde ki arkadaşların anlayabileceği şekilde anlatmaya çalışacağım.

Bu konuyu ilk başlarken çok merak ediyordum ve CI'nin index.php/controller/mehod link yapısına biraz uyuz olmuş ve değiştirmek için kollarımı sıvamıştım. Türkçe kaynak bulamadım. İngilizce kaynaklardan öğrendim ve şimdi sizlere ileteceğim.

index.php'yi Linkten Kaldırmak

Bunu yapmak için CI'nin kök dizininde bir adet .htaccess dosyası oluşturuyoruz. İçerisine şu kodları yazıyoruz.

Kod:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Ardından application/config/config.php dosyasını açıyoruz. İçerisinde bulunan

PHP:
$config['index_page'] = 'index.php';
kodu şu kod ile değiştiriyoruz.

PHP:
$config['index_page'] = '';
Yani index.php kısmını kaldırıyoruz.

SEO Dostu Linkleri Kullanmak

Kafanızda ki link yapılarını kullanabilmek için htaccess'de yaptığınız gibi link yapısını framework'e tanıtmamız gerekmektedir. Mantık olarak htaccess ile aynı ancak bu sefer htaccess üzerinden değilde application/config/routes.php dosyası üzerinden ayarlamalarımızı yapacağız.

PHP:
$route['404_override'] = '';
Bu kodun altından hemen link yapımızı oluşturalım.

PHP:
$route['blog/(:num)/(:any)\.html'] = "welcome/seolink/$1/$2";
Şimdi burada oluşturmuş olduğum link yapısını sizlere açıklıyayım. $route dizisinde anahtar olarak kullandığım kısım bizim link yapımız. Bu anahtarın alacağı değer ise aslında çalışacak olan linktir. Yani biz http://siteadresi.com/blog/2/deneme.html linkine girdiğimizde aslında http://siteadresi.com/welcome/seolink/2/deneme linkini çalıştırmış olacağız. Başlangıç seviyesinde ki arkadaşlar belki anlamayabilir. Burada welcome bizim controllerimiz seolink ise bu controllerimizin içersinde ki methoddur. Şimdi bu methodumuzu oluşturalım.

PHP:
	public function seolink()
	{
		// SEF ve ID bilgilerini almak için url helperını yüklüyoruz.
		$this->load->helper("url");
		
		// Url helperında bulunan segment methodunu kullanarak gerekli alanları çekiyoruz.
		$sef = $this->uri->segment(3,0);
		$id = $this->uri->segment(2,0);
		
		$data['sef'] = $sef;
		$data['id'] = $id;
	
		$this->load->view('seolink_view',$data);
	}
Şimdi seolink_view adında bir view dosyası oluşturalım. İçeriğini de şu şekilde yapalım.

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
	<title>Başlık</title>
</head>
<body>
	Gönderilen ID: <?php echo $id; ?><br />
	Gönderilen SEF: <?php echo $sef; ?>
</body>
</html>
Şimdi bu şekilde http://siteadresi.com/blog/2/deneme.html linkini çalıştırdığımız da ekran çıktısı şu şekilde olacaktır.

Kod:
Gönderilen ID: 2
Gönderilen SEF: deneme.html
Anlayamadığınız kısımları sorabilirsiniz. Ben bildiğim kadarını aktarmaya çalıştım.

Unutmadan link yapısında bazı özel durumlar kullandık. Bunları da konunun sonuna ekleyeyim.
  • :)num) = Numara tipinde veriler
  • :)any) = Herhangi bir veri

Tabi bunların yerine Regex'de kullanabilirsiniz. Örneğin
  • :)num) yerine ([0-9]+)
  • :)any) yerine (.*?)
 

inforesim

webmaster.tc
Katılım
4 Ağu 2012
Mesajlar
2,439
Beğeniler
0
#2
İnternette Ci ile ilgili kaynak sayısı maalesef çok az, Ellerine sağlık çok güzel bir makale olmuş :)
 

EuroTurk

webmaster.tc
Katılım
19 Eki 2012
Mesajlar
22
Beğeniler
0
#3
Çok teşekkürler aradığım bir konuydu.codeigniter öğrenmeye başladım hayırlısı paylaşımlarınz devam ettirebilirseniz çok sevinirim. :)
 

LadyArch3r

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
113
Beğeniler
0
#4
Bende öğrenmeye başladım.

Blogunda Cİ paylaşımlarının artmasını bekliyorum :)
 

LadyArch3r

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
113
Beğeniler
0
#6
İstek yapsanız anlatmaya çalışacağım da :) nerden başlayacağıma karar veremiyorum :)
Şöyle söyliyim o zaman en çok aranan konu nasıl bir sayfa yapısı ile işe başlanacağı.Mesela ben mvc mantığını kavradım.

Normal php ile yapım aşağıdaki gibi

PHP:
include('sayfalar/header.php');

	function gpc($val = null)
	{
		return (get_magic_quotes_gpc() ? $val : mysql_real_escape_string($val));
	}
	
	$sayfa = $_GET['sayfa'];
	$yol   = 'sayfalar/' . $sayfa . '.php';
		
	if($sayfa && file_exists($yol)){
		require ($yol);
	}else{
		require ('sayfalar/anasayfa.php');
	}

include("sayfalar/footer.php");

Ama diyelim bir Cİ ile projeye başlıcam nasıl başlayacağım bilemiyorum.Sayfa yapısı vs nasıl olacak.Türkçe olarak bir çok video kaynağını izledim ama yeterli seviyede değil.Proje başlangıcı ile bir bilgi vermiyor.
 

NaMLu

webmaster.tc
Katılım
8 Ağu 2012
Mesajlar
171
Beğeniler
0
Konum
404 - Not Found
#7
Şöyle söyliyim o zaman en çok aranan konu nasıl bir sayfa yapısı ile işe başlanacağı.Mesela ben mvc mantığını kavradım.

Normal php ile yapım aşağıdaki gibi

PHP:
include('sayfalar/header.php');

	function gpc($val = null)
	{
		return (get_magic_quotes_gpc() ? $val : mysql_real_escape_string($val));
	}
	
	$sayfa = $_GET['sayfa'];
	$yol   = 'sayfalar/' . $sayfa . '.php';
		
	if($sayfa && file_exists($yol)){
		require ($yol);
	}else{
		require ('sayfalar/anasayfa.php');
	}

include("sayfalar/footer.php");

Ama diyelim bir Cİ ile projeye başlıcam nasıl başlayacağım bilemiyorum.Sayfa yapısı vs nasıl olacak.Türkçe olarak bir çok video kaynağını izledim ama yeterli seviyede değil.Proje başlangıcı ile bir bilgi vermiyor.
Bu sorunun için bir video hazırlamaya çalışacağım. Mantık olarak söylemek gerekirse Require ve include view ile yüklenecekler yazılan fonksiyonlar içinde bir kütüphane yazılıp bu controller dosyasında çağrılarak kullanması gerekiyor. Eğer sef link kullanılıyorsa GET yerine Url helperında bulunan segment methodu kullanılacak.
 

EuroTurk

webmaster.tc
Katılım
19 Eki 2012
Mesajlar
22
Beğeniler
0
#8
Bende bir istekte bulunabilirmiyim :)
sınırsız kategori ve pagination olayını rica edecektim şuan proje yapmaya calısıyorum ama
burda kalınca ileriyede gidemiyorum. paylaşabilirseniz çok çok sevinirim :)
 

LadyArch3r

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
113
Beğeniler
0
#9
Bu sorunun için bir video hazırlamaya çalışacağım. Mantık olarak söylemek gerekirse Require ve include view ile yüklenecekler yazılan fonksiyonlar içinde bir kütüphane yazılıp bu controller dosyasında çağrılarak kullanması gerekiyor. Eğer sef link kullanılıyorsa GET yerine Url helperında bulunan segment methodu kullanılacak.
Merakla bekliyorum.

Bende bir istekte bulunabilirmiyim :)
sınırsız kategori ve pagination olayını rica edecektim şuan proje yapmaya calısıyorum ama
burda kalınca ileriyede gidemiyorum. paylaşabilirseniz çok çok sevinirim :)
Arkasına bu isteklerde olursa tadından yenmez :)

Kolay gelsin şimdiden sana.