Welcome, Guest. Please login or register.
Did you miss your activation email?
July 09, 2008, 06:02:55 am
42749 Posts in 8091 Topics by 17932 Members
Latest Member: codder
Turk-Php.Com Forum  |  Yardım Forumları  |  Sunucu Yardım Forumu  |  Permalink yapamadım bir türlü « previous next »
Pages: [1] 2 Print
Author Topic: Permalink yapamadım bir türlü  (Read 1702 times)
eburhan
PHP Stajyeri
**
Offline Offline

Posts: 367



View Profile WWW
Permalink yapamadım bir türlü
« on: December 01, 2006, 04:16:01 am »

Lokal bilgisayarımda şöyle bir linkim var.

http://localhost/sitem/haber.php?no=17


Ben bunu permalink'e dönüştürmek istiyorum. Yani şöyle olsun:

http://localhost/sitem/haber/17/


.htaccess içerisine aynen şunları yazdım ama bir türlü olmadı. Nerde hata yapıyorum?

Options
RewriteEngine On
RewriteBase /
RewriteRule ^/haber/([0-9]+)/$ haber.php?no=$1
Logged

engin
Admin
*
Offline Offline

Posts: 496



View Profile
Ynt: Permalink yapamadım bir türlü
« Reply #1 on: December 01, 2006, 07:41:25 pm »

sanırım yapmak istediğin şöyle birşey

sitem klasörü altındaki .htaccess içeriği
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.+)/([0-9]+)/?$ ./haber.php?no=$2 [L]

haber.php
Code:
<?php
var_dump($_GET);
?>


örnek -> http://e-php.net/eburhan/sitem/haber/12

Logged

Engin Dumlu
engin ~ turk-php.com
achilles ~ member.turk-php.com
eburhan
PHP Stajyeri
**
Offline Offline

Posts: 367



View Profile WWW
Ynt: Permalink yapamadım bir türlü
« Reply #2 on: December 02, 2006, 05:55:53 am »

Teşekkür ederim ama bir sorum daha olacak.

Ben bütün projede linkleri http://localhost/sitem/haber.php?no=17 olarak belirlemiştim.

Code:
<a href="http://localhost/sitem/haber.php?no=17">Haber 17</a>
.... gibi


Şimdi bunların tümünü dönüştürmem mi gerekiyor?

Code:
<a href="http://localhost/sitem/haber/17">Haber 17</a>
.... gibi mi yapmalıyım?
Logged

engin
Admin
*
Offline Offline

Posts: 496



View Profile
Ynt: Permalink yapamadım bir türlü
« Reply #3 on: December 03, 2006, 02:48:23 am »

merhaba,
eğer linkleri dinamik olarak php ile yapıyorsanız permalinke geçmek zor olmayacaktır
ayrıca her ikisini birdende kullanabilirsiniz
yazdığımız rewrite kuralı gelen istekteki "request file" dosyası bulunamadığı zaman çalışır
Logged

Engin Dumlu
engin ~ turk-php.com
achilles ~ member.turk-php.com
aziz
PHP Programcısı
****
Offline Offline

Posts: 940



View Profile
Ynt: Permalink yapamadım bir türlü
« Reply #4 on: December 03, 2006, 08:28:35 am »

Lokal bilgisayarımda şöyle bir linkim var.

http://localhost/sitem/haber.php?no=17

Ben bunu permalink'e dönüştürmek istiyorum. Yani şöyle olsun:

http://localhost/sitem/haber/17/

.htaccess içerisine aynen şunları yazdım ama bir türlü olmadı. Nerde hata yapıyorum?

Options
RewriteEngine On
RewriteBase /
RewriteRule ^/haber/([0-9]+)/$ haber.php?no=$1

Bunlar dışında dikkat etmeniz gereken 2 önemli nokta var.
1.si , $_GET değişkenleri sayısı 2 yada 3 olduğunda sistem çalışmayacaktır.
RewriteRull ları ona göre düzenlemelisiniz. Unutmayın, rewriterull lar içerisinde, en yüksek değişken sayısı en yukarıda olmalıdır ki, değişken eksik olduğunda alt satıra bakabilsin.

2.si haber.php?no=17 diyorsunuz. Bu eğer haber.php?kategori=siyaset olursa yine sistem çalışmayacaktır.
evet, sistem kategori değişkenini no gibi görecek ve problem olmayacaktır. haber.php?kategori=3 çalışır, ancak kategorinin yazıya dönüştüğü durumlarda sistem yine çalışmayacaktır.
bunun için,
Code:
RewriteRule ^(.*)/(.*)/$ haber.php?degisken=$1 [L]
gibi bir kural kullanmak daha uygun olacaktır. Ayrıca, geçmiş başlıklarda söylendiği üzere [0-9] , [a-z0-9] gibi tanımlamalar site hızını yavaşlatacaktır...

İyi Çalışmalar
Logged

Jabber:
xmpp:aziz@member.turk-php.com
Alihan ÇETİN
www.azizce.com
eburhan
PHP Stajyeri
**
Offline Offline

Posts: 367



View Profile WWW
Ynt: Permalink yapamadım bir türlü
« Reply #5 on: December 03, 2006, 10:18:11 am »

[0-9] , [a-z0-9] gibi tanımlamalar site hızını yavaşlatacaktır...

Bu tavsiyenden sonra [0-9] tanımlamasını kaldırdım. Dediğin gibi yavaşlatıyorsa buna gerek yok. Çünkü php dosyasının en başında is_numeric() ile zaten gelen değerin sayısal olup olmadığını kontrol ettiriyorum. Herkese teşekkürler  laugh
Logged

GaziMarşı
PHP Stajyeri
**
Offline Offline

Posts: 447


View Profile
Ynt: Permalink yapamadım bir türlü
« Reply #6 on: December 03, 2006, 03:30:23 pm »

Kusuruma bakmayın ama

Quote

şeklindeki bir linki neden

Quote

şekline getirmek istiyorsunuz... guvenlık nedenıyle mı ? degılse anlamakta zorluk cekıyorum...

« Last Edit: December 03, 2006, 03:32:05 pm by GaziMarşı » Logged

aziz
PHP Programcısı
****
Offline Offline

Posts: 940



View Profile
Ynt: Permalink yapamadım bir türlü
« Reply #7 on: December 03, 2006, 04:27:54 pm »

1.) SEO Optimizasyonu
2.) Güvenlik
3.) Havalı URI ler  :P

için
Logged

Jabber:
xmpp:aziz@member.turk-php.com
Alihan ÇETİN
www.azizce.com
eburhan
PHP Stajyeri
**
Offline Offline

Posts: 367



View Profile WWW
Ynt: Permalink yapamadım bir türlü
« Reply #8 on: December 03, 2006, 05:15:40 pm »

Valla benim en önemli sebebim arama motoru optimizasyonu Smiley
Logged

GaziMarşı
PHP Stajyeri
**
Offline Offline

Posts: 447


View Profile
Ynt: Permalink yapamadım bir türlü
« Reply #9 on: December 03, 2006, 06:17:04 pm »

o zaman bundan sonra bende boyle yapayım...  laugh
Logged

aziz
PHP Programcısı
****
Offline Offline

Posts: 940



View Profile
Ynt: Permalink yapamadım bir türlü
« Reply #10 on: December 03, 2006, 06:22:32 pm »

Arkadaşlar bir yanlışlık olmasın 80/20 diye bir hikaye var... bu söylediğim onun dışında arama motorlarının kolay indexleme yapabilmesini sağlıyor... yani yaklaşık 8-9 maddeden biri sadece
Logged

Jabber:
xmpp:aziz@member.turk-php.com
Alihan ÇETİN
www.azizce.com
engin
Admin
*
Offline Offline

Posts: 496



View Profile
Ynt: Permalink yapamadım bir türlü
« Reply #11 on: December 04, 2006, 04:58:09 am »

illa backreference kullanarak url'yi parçalamak zorunda değilsiniz
$_GET array'inde nekadar veri olursa olsun, bunu php içerisinde $_SERVER['REQUEST_URI'] şeklinde alıp ayıklamayı yapabilirsiniz,
arama motorları için /haber.php?no=20  ile  /haber/20 arasında hiçbir fark yoktur
rewrite ile yapılan basit regular expression işlemlerini bırakın RewriteMap kullansanız bile performans veya hız kaybı olcağını sanmıyorum ( aşırı popüler bir site değilse )
Logged

Engin Dumlu
engin ~ turk-php.com
achilles ~ member.turk-php.com
eburhan
PHP Stajyeri
**
Offline Offline

Posts: 367



View Profile WWW
Ynt: Permalink yapamadım bir türlü
« Reply #12 on: December 04, 2006, 05:04:10 am »

arama motorları için /haber.php?no=20  ile  /haber/20 arasında hiçbir fark yoktur

Engin tam da sayfalardaki bütün linkleri değiştiriyordum. Şimdi söylencek söz mü bu Smiley
Bu arada ben linki

http://localhost/sitem/haber.html/17/Fenerbahce-zirvede-yalnizlasiyor/

şekline çevirdim. Sondaki haber başlığını $_GET[] ile almıyorum, işime yaramıyor ama seo için katkıda bulunabileceğini düşündüm. Siz ne dersiniz?
Logged

engin
Admin
*
Offline Offline

Posts: 496



View Profile
Ynt: Permalink yapamadım bir türlü
« Reply #13 on: December 04, 2006, 05:32:50 am »

amaç sadece arama motorları ise hiç gerek yok
ama linklerim güzel görünsün diyorsan kullan tabii
bi önceki mesajımda söylediğim gibi php ile url'den gelen verilere $_SERVER['REQUEST_URI'] ile erişebilirsin
http://e-php.net/eburhan/sitem/haber/haydar/mahmut/12/
Logged

Engin Dumlu
engin ~ turk-php.com
achilles ~ member.turk-php.com
eburhan
PHP Stajyeri
**
Offline Offline

Posts: 367



View Profile WWW
Ynt: Permalink yapamadım bir türlü
« Reply #14 on: December 04, 2006, 05:41:45 am »

Önceki mesajını dikkat aldım ama REQUEST_URI kullanmayı gerektirecek birşey yok şimdilik. Dediğim gibi sadece haber numarası (12) bana yetiyor onu da GET ile alıyorum.

Ben şunun için düşünmüştüm. Sitenin ismini ve haber başlığını, sitenin <title></title> etiketlerine zaten yazdırıyorum. Eğer Spider hem <title> içerisinde hem de URL içerisinde aynı  kelimeleri görürse bundan bir anlam çıkarabilir diye düşündüm  Roll Eyes
Logged

Pages: [1] 2 Print 
« previous next »
Jump to: