Cevaplar
-
PHP ile yazıyorsan
Projenin ana dizinine .htaccess şeklinde bir dosya oluşturup
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ user.php?username=$1
kodunu yazarak user.php?username=uyeadi şeklinde request yapmasını sağlarsın,
user.php'de bu değişkene$_GET['username']
şeklinde ulaşabilirsin.
Buna alternatif olarak PHP frameworkler kullanabilirsin, frameworklerdeki router olayı bu ihtiyacını giderebilir, fakat daha hızlı bir iş çıkarmak için yukarıdaki şekli öneririm.-
mburak
teşekkürler13 yıl önce yazılmış
-
-
Benzer bir soruya (http://www.uzmansorusu.com/soru/479) cevabı vermiştim.
fka'nın çözümü de doğru ama bir eksiklik var, senin bütün url sorgularını user.php dosyasına yönlendirmiş, o yüzden www.site.com/uyeadi şeklinde adresinde de user.php dosyası çalışacak, www.site.com/sayfaadi adresinde de user.php dosyası çalışacak.
Sitende hem kullanıcılar hem de sayfalar olacak ise, adreslemeyi
www.site.com/uye/uyeadi
www.site.com/sayfadi
www.site.com/haber/haberadi
www.site.com/grup/grupadi
şekline oluşturman daha iyi ve uygulama açısından mantıklı olacaktır.
Sorunun cevabına gelince
Bu tarz kullanım için öncelik yapmanın gereken 2 durum var
1. sisteminiz apache tabanlı bir sunucu da olup, .htaccess dosyası ve mod_rewrite desteği kullanılabilir olmalı.
2. Veritabanınızda, sayfalarınızı kaydettiğiniz tablo içerisinde, bu linklerde kullanacağınız "uyeadi" kısmıni kaydetmiş olduğunuz _UNIQUE_ değerli bir "uyeadi" sütunu olmalı.
Zor Yöntem;
Daha sonra önce htaccess içinde
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
şeklinde bütün sorgularınızı index.php dosyasına gönderen bir tanımlama yapmanız gerekiyor. Daha sonra php dosyalarınızda hazırlayacağınız bir url_parser ile yazinin_basligi kısmını alıp, bunu veritabanınızdaki yazılarınızı/üyelerinizi eklediğiniz tablonun "yaziadi/uyeadi" şeklinde tanımlanmış ilgili kaydın sütunu ile karşılaştırmanız ve ilgili yazıyı seçmeniz gerekiyor.
Yukarıdaki kullanım wordpress ve diğer benzeri sistemlerde kullanılan bir yöntem. İlk başlarda url parser hazırlamak zor gelebilir ciddi bir şekilde o zaman ikinci bir metod olarak şunu deneyebilirsiniz,
Kolay Yöntem
yine .htaccess kodunuzun içine şu kodu ekleyinOptions +FollowSymLinks RewriteEngine on RewriteBase / RewriteRule ^uye/([A-Za-z0-9]+)/$ $1 [R] RewriteRule ^uye/([A-Za-z0-9]+)$ uye.php?title=$1 RewriteRule ^grup/([A-Za-z0-9]+)/$ $1 [R] RewriteRule ^grup/([A-Za-z0-9]+)$ grup.php?title=$1 RewriteRule ^haber/([A-Za-z0-9]+)/$ $1 [R] RewriteRule ^haber/([A-Za-z0-9]+)$ haber.php?title=$1 RewriteRule ^([A-Za-z0-9]+)/$ $1 [R] RewriteRule ^([A-Za-z0-9]+)$ index.php?title=$1
Bu kod ile php dosyanızın içerisinden bir$title = $_GET['title']
şeklinde alabileceğiniz bir sanal querystringiniz olacak. Buradan sonra yine yukarıda anlattığım gibi, bu title değişkeni ile artık hangi sayfada iseniz, rahatlıkla veritabanında bulunan ilgili kaydı getirmek için kullanabileceğiniz bir değeriniz oluyor.-
fka
@bcinarli,
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
bunun yerine
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ index.php?route=$1 [L]
kullanırsa,$_GET['route']
parametresiyle url parsing yapmadan gelen verinin tümünü alabilir.
Kaldı ki bir çok MVC yapısı bu şekilde kullanmaktadır.13 yıl önce yazılmış -
gblack
peki index.php ye yönlendirdiğimizde bütün linkler için url_parser mantığı nasıl olmalı? gelen get verilerine göre include ederek mi?13 yıl önce yazılmış -
bcinarli
genelde index.php de bir bootstrap komutu ve bazı include komutları bulunur MVC tarzı sistemlerde. Hazırlayacağınız url_parser fonksiyonu size urlnizi kısımlara ayırarak, bu kısımları kontrol edebileceğiniz bir sisteme sahip olmalı.13 yıl önce yazılmış
-