İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

.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:
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
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:
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
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.
 

sempaty

1
İyinet Üyesi
Katılım
25 Şubat 2005
Mesajlar
3,824
Reaction score
19
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.
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
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.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst