lostyazilim
tr.link

NGINX ile URL rewrite problemi

6 Mesajlar 1.070 Okunma
lstbozum
tr.link

srhtycl srhtycl IBM Ambassador Kullanıcı
  • Üyelik 13.04.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Software Engineer
  • Konum İstanbul Anadolu
  • Ad Soyad S** Y**
  • Mesajlar 501
  • Beğeniler 86 / 124
  • Ticaret 12, (%100)
Arkadaşlar merhaba,
NGINX dünyasında yeniyim. İlk defa bir web projemizi NGINX üzerinde geliştiyorum. URL yapımı değiştirmek istiyorum. Öncelikle şu anki var olan url düzenimden bahsedeyim;

domain.com/character.php
domain.com/character.php?id=1

domain.com/character.php?id=1page=slog
domain.com/character.php?page=slog

domain.com/character.php?page=slog&date=4-2018
domain.com/character.php?id=1&page=slog&date=4-2018

domain.com/character.php?id=1&page=slog&sid=10
domain.com/character.php?page=slog&sid=10


Yukarıda görmüş olduğunuz linkler, sitemin bazı sayfalarına ait. Gördüğünüz gibi SEO dostu yapıda değiller. Bu linkleri şu şekle çevirmeyi başardım;

domain.com/character/
domain.com/character/1

domain.com/character/1/slog
domain.com/character/slog

domain.com/character/slog/date/4-2018
domain.com/character/1/slog/date/4-2018

domain.com/character/1/slog/sid/10
domain.com/character/slog/sid/10


Fakat bu yapıyı yaparken, NGINX config dosyama şu uzun kod bloğunu eklemiş oldum.

location = /character {
try_files character.php /character.php;
}

location = /character/ {
try_files character.php /character.php;
}

location ~ /character/([0-9]+)$ {
try_files character.php /character.php?id=$1;
}

location ~ /character/([A-z]+)$ {
try_files character.php /character.php?page=$1;
}

location ~ /character/([0-9]+)/([A-z]+)$ {
try_files character.php /character.php?id=$1&page=$2;
}

location ~ /character/([0-9]+)/([A-z]+)/date/(.*)$ {
try_files character.php /character.php?id=$1&page=$2&date=$3;
}

location ~ /character/([A-z]+)/date/(.*)$ {
try_files character.php /character.php?page=$1&date=$2;
}

location ~ /character/([0-9]+)/([A-z]+)/sid/([0-9]+)$ {
try_files character.php /character.php?id=$1&page=$2&sid=$3;
}

location ~ /character/([A-z]+)/sid/([0-9]+)$ {
try_files character.php /character.php?page=$1&sid=$2;
}

location ~ /character/([A-z]+)/action/([A-z]+)/sid/([0-9]+)$ {
try_files character.php /character.php?page=$1&action=$2&sid=$3;
}


Ve gördüğünüz üzere bu sadece character.php ve onun altsayfaları için. İlerde character.php haricindeki birkaç sayfada buna benzer karmaşık URLler olacak. O sayfaları da istediğim hale getirmek için yine server config dosyama bir ton kod eklemem gerecek. Acaba yanlış bir şeyler mi yapıyorum? Bu işin daha kolay bir yolu yok mu?
 

 

wmaraci
reklam

Machine Machine www.mybb.pro Kullanıcı
  • Üyelik 24.08.2012
  • Yaş/Cinsiyet 29 / E
  • Meslek Front end Developer
  • Konum Aksaray
  • Ad Soyad H** K**
  • Mesajlar 1041
  • Beğeniler 327 / 328
  • Ticaret 12, (%100)
Merhaba,

Hazır bir yazılım kullanmıyorsanız örneğin Wordpress gibi mecburen kendinize ait url yapınızı bu şekilde oluşturmanız gerekiyor. nginx.conf dosyasını daha kalabalık olmasını istemiyorsunuz eğer nginx.conf bulunduğu dizine bir adet kendinize göre isimlendireceğiniz bir dosya daha oluşturun ve onu nginx.conf dosyasına include edin.

Böylelikle tüm url yapınızı tek bir dosyada toplamış olur, nginx.conf üzerinde ki kalabalığıda ortadan kaldırmış olursunuz.

Örnek include şekli;

include /etc/nginx/kaliciurl.conf;

Hazır bir yazılım kullanmadığınız için url yapınızı kendiniz oluşturmanız gerekiyor. Wordpress vs olsaydı try_files komutu ile hallediliyordu ancak özel yazılımlarda nginx'i yazılıma göre configure etmek gerek.
srhtycl

kişi bu mesajı beğendi.

MyBB Türkçe Destek Forumu | mybb.pro

srhtycl srhtycl IBM Ambassador Kullanıcı
  • Üyelik 13.04.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Software Engineer
  • Konum İstanbul Anadolu
  • Ad Soyad S** Y**
  • Mesajlar 501
  • Beğeniler 86 / 124
  • Ticaret 12, (%100)
Hazır bir sistem kullanmıyorum malesef. Scripti kendim yazıyorum. Yani o zaman nginx config dosyasına yazdığım kodların daha kısa bir hali yok mu? İlla böyle her parametre için tek tek belirtmem mi gerekecek?
 

 

Mrtcn Mrtcn PrismaCSI Kullanıcı
  • Üyelik 06.09.2013
  • Yaş/Cinsiyet 32 / E
  • Meslek Cyber Sec & Project Manager
  • Konum Ankara
  • Ad Soyad M** G**
  • Mesajlar 3356
  • Beğeniler 481 / 1987
  • Ticaret 10, (%100)
Yazılımınızda değişiklik yaparak çözebilirsiniz. Endpoint şeklinde yazmanız bu tarz nginx ameleliğinden kurtarır.

Yoksa Nginx de her bir URL için bu şekilde bir tanımlama ile düzeltme yapmak zorundasınız. Nginxde bu tanımlamalar web sunucusunun yavaşlamasına neden olmaz.(insanların genelde aklına bu geliyor çünkü)

Kolay gelsin.
srhtycl

kişi bu mesajı beğendi.

wmaraci
wmaraci

Machine Machine www.mybb.pro Kullanıcı
  • Üyelik 24.08.2012
  • Yaş/Cinsiyet 29 / E
  • Meslek Front end Developer
  • Konum Aksaray
  • Ad Soyad H** K**
  • Mesajlar 1041
  • Beğeniler 327 / 328
  • Ticaret 12, (%100)

srhtycl adlı üyeden alıntı

Hazır bir sistem kullanmıyorum malesef. Scripti kendim yazıyorum. Yani o zaman nginx config dosyasına yazdığım kodların daha kısa bir hali yok mu? İlla böyle her parametre için tek tek belirtmem mi gerekecek?


PHP ile url yapıların self hale getirebilirsiniz. Bir php dosyası oluşturup, tüm url yapınızı oradan halleder, yönlendirme işlemlerini php ile yapar daha sonra nginx üzerinden bağlantılara gelen istekleri bu php dosyasına yönlendirirseniz soruna çözüm olabilir diye düşünüyorum. Kesin değildir ancak denemekten zarar gelmez bence
srhtycl

kişi bu mesajı beğendi.

MyBB Türkçe Destek Forumu | mybb.pro

srhtycl srhtycl IBM Ambassador Kullanıcı
  • Üyelik 13.04.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Software Engineer
  • Konum İstanbul Anadolu
  • Ad Soyad S** Y**
  • Mesajlar 501
  • Beğeniler 86 / 124
  • Ticaret 12, (%100)

Mrtcn adlı üyeden alıntı

Yazılımınızda değişiklik yaparak çözebilirsiniz. Endpoint şeklinde yazmanız bu tarz nginx ameleliğinden kurtarır.

Yoksa Nginx de her bir URL için bu şekilde bir tanımlama ile düzeltme yapmak zorundasınız. Nginxde bu tanımlamalar web sunucusunun yavaşlamasına neden olmaz.(insanların genelde aklına bu geliyor çünkü)

Kolay gelsin.


Cevabınız için teşekkür ederim. Yazılımım üzerinde endpoint URL yapısını nasıl kullanacağıma dair bir fikrim yok şu an için. Sanırım bir süre daha config dosyasında ameleliğe devam edeceğim gibi gözüküyor.
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al