

.Htaccess SEO İçin Regular Expression Sorunsalı. 2 Haftadır Sorunu Çözemedim!
-
Beyler 2 haftadır deniyorum yanılıyorum deniyorum yanılıyorum hala doğru yöntemi bulamadım. Şimdi sorunumdan bahsetmek istiyorum. Çoğu sayfası SEF bağlantı yapısı ile uygun bir sistem tasarlıyorum kullandığım düzenli ifadeler aşağıdaki gibidir...
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z]+)[/]$ index.php?sehir=$1 [L]
RewriteRule ^isim[/](.*)[/]soyisim[/](.*)[^?](.*)$ index.php?isim=$1&soyisim=$2&$3 [L]
RewriteRule ^isim[/](.*)[/]soyisim[/](.*)$ index.php?isim=$1&soyisim=$2 [L]1. Kuralda: www.siteismi.com/antalya/ yazdığımda 1. kuralım www.siteismi.com/index.php?sehir=antalya yönlendirmesi yapıyor bu konuda bir sıkıtım yok.
3. Kuralda: www.siteismi.com/isim/dr/soyisim/kill yazdığımda www.siteismi.com/index.php?isim=dr&soyisim=kill yönlendirmesi yapıyor bu konudada bir sıkıntım yok.
Şimdi yapamadığım olaya gelelim diyelim ki
www.siteismi.com/isim/dr/soyisim/kill?goster=yorum&sayfa=2
yazıldığında htaccess ile kill? işaretinden sonra yukarıda altı çizili kalın yeri yakalayıp şu şekilde rewrite yazmak istiyorum..
www.siteismi.com/index.php?isim=dr&soyisim=kill&goster=yorum&sayfa=2
Bunun için yazdığım 2. kural ve başarısızlıklarım hakkında şunu söyleyebilirim..
^isim[/](.*)[/]soyisim[/](.*)[^?](.*)$ index.php?isim=$1&soyisim=$2&$3 [L]
normalde bu reg. exp. göre htaccess URL i yakalıyor. Ancak $3 olan veriyi hiçbir şekilde yazmıyor. Yani aşağıdaki gibi bir değiştirme yaptığımda...
^isim[/](.*)[/]soyisim[/](.*)[^?](.*)$ index.php?isim=$1&soyisim=$2baskabirseyler [L]
www.siteismi.com/isim/dr/soyisim/kill?goster=yorum&sayfa=2
Yukarıdaki adresi aşağıdaki adres olarak yeniden yazıyor.
www.siteismi.com/index.php?isim=dr&soyisim=killbaskabirseyler
***************************************
Ancak aşağıdaki gibi bir düzenli ifade ile maalesef son yakalama parantezi olan (.*) kısmını $3 ile yazmıyor
^isim[/](.*)[/]soyisim[/](.*)[^?](.*)$ index.php?isim=$1&soyisim=$2&$3 [L]
www.siteismi.com/isim/dr/soyisim/kill?goster=yorum&sayfa=2
Yukarıdaki adresi aşağıdaki gibi yazıyor..
www.siteismi.com/index.php?isim=dr&soyisim=killBir örnek daha vereyim. Ekşi sözlükte biliyorsunuz SEF yapısı mevcut. Ancak bu yapı benim kullandığım gibi kullanabiliyorlar.
Örnek konu başlığı
https://eksisozluk.com/bilgisayar--34041?a=nice&p=2
Bunu nasıl düzeltebilirim?
-
index.php dosyası
<?php
echo 'A degiskeni : '.$_GET['a'].'<br>B degiskeni : '.$_GET['b'];
?>
.htaccess dosyası
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]*)/$ index.php?a=$1 [QSA]
örnek url
blabla.com/deneme/?b=laylaylom
html çıktısı
A degiskeni : deneme
B degiskeni : laylaylomyanisi
[L] dersen istediği değişkenleri yakaladıktan sonra devamını sallamaz [QSA] dersen devamındaki değişkenleri de alır.
-
Hybris bunu yazdı
index.php dosyası
.htaccess dosyası
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]*)/$ index.php?a=$1 [QSA]
örnek url
blabla.com/deneme/?b=laylaylom
html çıktısı
A degiskeni : deneme
B degiskeni : laylaylomyanisi
[L] dersen istediği değişkenleri yakaladıktan sonra devamını sallamaz [QSA] dersen devamındaki değişkenleri de alır.
Hocam çok saolasın bu FLAG ları çok önemsemiyordum açıkçası. Az önce baktım http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa adresinde dediğin gibi geri kalan query stringi otomatik yönelendirilen URL a yolluyor zaten. 2 haftadır boşa kafa yoruyormuşum. Şuraya sorsam boşa vakit harcamazdım.