.htaccess permalink problemi yaşıyorum.

E
Erturk
Misafir
Merhaba arkadaşlar.

.htaccess konusunda takıldığım bir nokta var. Yardımcı olabilirseniz çok sevinirim.

sayfa.php ve haber.php olmak üzere iki sayfam var. Haber ve sayfa başlıkları veritabanda link alanlarında permalink seklinde (Örn: yeni-haber-ekledim) kayıt ediliyor.

sayfa.php?link=sayfaadi seklinde calıstırınca sorunsuz calısmakta. asagıdaki htaccess kodlarını kullandıgımda da sayfalar HTML uzantısıyla (siteadi.com/sayfaadi.html) acılıyor. Lakin sorun haberler kısımında.

Normal şartlarda haber.php?link=yeni-haber-ekledim diye acınca calısıyor lakin HTML uzantısıyla (siteadi.com/yeni-haber-ekledim.html) calısmıyor.

htaccess üzerinde uzantıyı değiştirince o uzantıyla calısıyor. Ama inat ettim HTML uzantısıyla calıstırmak istiyorum.


Uzun lafın kısası, aşağıdaki kodlarda ne yaparsam yapayım haber linkleri hep sayfa.php uzerinde calısıyor. Veritabanında da oyle bir link olmadıgı için ana sayfaya döndürüyor.

Uzantıyı değiştirmeden nasıl yapabilirim arkadaşlar bunu ? :ıslık:


PHP:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^index.html index.php [L]
RewriteRule ^fotografgalerisi.html galeri.php [L]
RewriteRule ^haberler.html haberler.php [L]
RewriteRule ^iletisim.html yorumlar.php [L]
RewriteRule ^yorumlar.html yorumlar.php [L]
ReWriteRule ^iletisim.html iletisim.php
RewriteRule ^([a-z0-9_-]+)\.html$ sayfa.php?link=$1 [L]
RewriteRule ^([a-z0-9_-]+)\.html$ haber.php?link=$1 [L]
 
E
Erturk
Misafir
RewriteRule ^([a-z0-9_-]+)\.html$ oku.php?haber=$1 [L]
RewriteRule ^([a-z0-9_-]+)\.html$ oku.php?sayfa=$1 [L]

oku.php uzerinde iki farklı string deger cekip yapmayı düşündük ama yine olmadı...

Mecbur uzantıyı değişecekmiyiz yani ? :ağla:
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
merhaba Erturk,

bu hali ile php sayfalarında ve fonksiyonlarda değişiklik yapmadıkça sayfa.php açılacaktır. Çünkü ([a-z0-9_-]+).html tanılaması ile ([a-z0-9_-]+).html tanımalası arasında gördüğünüz gibi bir fark yok. yani siz burada diyorsunuz ki 5.html olursa sayfa.php'ye yönlendir. bir sonraki kodda gene 5.html olursa haber.php'ye yönlendir. Doğal olarak ilk olana yönleniyor yani sayfa.php.

bununu için iki çözüm var. Birinicisi anlamız açısından örnek. istediğiniz gibi düzenleyebilirsibniz.

RewriteRule ^([a-z0-9_-]+).html$ sayfa.php?link=$1 [L]
RewriteRule ^([a-z0-9_-]+)-haber.html$ haber.php?link=$1 [L]

gibi yaparsanız 5-haber.html şeklinde o lanlar haber.php'ye gider.


2. yöntem ise içerikleri oluştururken ayrı bir veritabanı oşuturursunuz içerik eklerken oluşan seo kelimesini "yeni-sayfa-ekledim" de oraya eklersiniz ve onun sayfa sayfas mı yoksa haber sayfası mı olduğunu belirtirsiniz.

RewriteRule ^([a-z0-9_-]+).html$ yonlendir.php?link=$1 [L]

yaparsınız ve burada link değişkenini belirleyip sonrasını ona göre işlem yaptırırsınız.
 
E
Erturk
Misafir
PHP:
RewriteRule ^([a-z0-9_-]+).html$ a.php?oku=haber&link=$1 [L]
RewriteRule ^([a-z0-9_-]+).html$ a.php?oku=sayfa&link=$1 [L]

Bu şekilde çift değer belirtmeme ragmen yine olmuyor...

PHP:
function dene() {

	global $oku;
	if ($oku =="haber") {
	echo "haber okutucam";
	} else if ($oku == "sayfa") {
	echo "sayfa okutcam";
	} else {
	echo "bomboş";
	}
}


Çok basit bir şekilde kontrol yapayım dedim (genelde switch kullanırım) url satırına HTML uzantılı herhangi birşey yazınca haber okutucam cıkıyor... htaccess uzerinde sayfanın uzantısını htm yapıp herhangi bir htm uzantılı url girincede sayfa okutucam yazıyor...

Yani işin özü şu ki;

HTML uzantısını iki farklı sayfada kullanamıyorum. Ve anladıgım kadarıyla kullanamayacagımda :ağla:
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
Erturk belirleyici olan ([a-z0-9_-]+).html kısmıdır. Yönlendirme buradan başlar. a.php?oku=haber&link=$1 burayı değiştirmeniz yönlendirmeyi etkilemez. BU kısım ile yönlenen sayfada değişkenleri atıyorsunuz.

Size nasıl kullanabileceğinizi anlattım lütfen üstteki mesajımı daha dikaktli okuyunuz.
 
1
Onaylı Üye
Üye
Katılım
25 Şubat 2005
Mesajlar
3,824
Tepki puanı
20
Konum
hawaii. ama sanal tur.
ayrı tablolarda değillerse (örneğin select * from haber veya select * from sayfa gibi değil de select * from icerik where turu='sayfa' and id='24' gibiyse) yapılabilir. şöyle yaparsın

RewriteRule ^([a-z0-9_-]+).html$ icerik.php?id=$1 [L]

sonra icerik.php sayfasından id sorgulayıp hangi türdeyse ona göre include yapabilirsin mesela.
 
0
Onaylı Üye
Üye
Katılım
12 Aralık 2004
Mesajlar
9,603
Tepki puanı
106
Konum
AZ
Bütün herşeyi tek dosyaya rewrite edip, php ile URL satırını parse ederek ortamlara aksana. Örneğini forumda konuştuk daha önce. Rewrite başa bela her yeni URL durumu için yeni kural yaz filan..
 
E
Erturk
Misafir
Haberleri HTM, Sayfalarıysa HTML yaparak hallettim arkadaşlar. İş biraz acildi çünkü. Ama bu konuda ilerliyen günlerde yine bir calısma yapıcam.

İlginizden dolayı tesekkur ederim.
 
Geri
Üst