• 11-03-2018, 11:47:44
    #1
    Arkadaşlar merhaba,
    NGINX dünyasında yeniyim. İlk defa bir web projemiz 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?
  • 11-03-2018, 12:46:47
    #2
    Aşağıdaki gibi $args kullanabilirsiniz. Çalışacağını düşünüyorum. Script yapınızda değişiklik gerekebilir.
    location = /character/ {
    try_files $uri $uri/ /character/character.php?$args;
    }
  • 11-03-2018, 12:57:05
    #3
    victories adlı üyeden alıntı: mesajı görüntüle
    Aşağıdaki gibi $args kullanabilirsiniz. Çalışacağını düşünüyorum. Script yapınızda değişiklik gerekebilir.
    location = /character/ {
    try_files $uri $uri/ /character/character.php?$args;
    }
    Merhaba,
    bunu yapınca malesef sadece şu url yapısı çalışıyor:
    domain.com/character/
    Diğer tüm varyasyonlar patlıyor.
  • 11-03-2018, 13:14:02
    #4
    /character/50/deneme/date/2016 şeklinde bir sayfan var diyelim.
    $args, character.php dosyana 50 - deneme - date - 2016 şeklinde 4 ayrı değişken gönderir, senin bu değişkenleri php içinde işlemen gerekir.
  • 11-03-2018, 13:51:37
    #5
    victories adlı üyeden alıntı: mesajı görüntüle
    /character/50/deneme/date/2016 şeklinde bir sayfan var diyelim.
    $args, character.php dosyana 50 - deneme - date - 2016 şeklinde 4 ayrı değişken gönderir, senin bu değişkenleri php içinde işlemen gerekir.
    Yardımınız için teşekkür ederim arkaplanda zaten GET ile parametreleri işliyorum. Fakat sizin dediğiniz kodu config dosyasına ekleyip şu url'i çağırdığımda;
    domain.com/character/10/
    Böyle bir php sayfası bulunamadı uyarısına yönleniyorum. Yani sanki 10'u parametre olarak değil de, bir php dosyası gibi düşünüyor sistem.
  • 11-03-2018, 14:31:53
    #6
    nginx config dosyanızı paylaşabilirmisiniz? örneğin aşağıdaki kod ile nginx önce domain.com/character/10 diye klasör arar, bulamazsa domain.com/character/10/ şeklinde dener, onuda bulamazsa /character/character.php?character&10 şeklinde phpye gönderir.
    try_files $uri $uri/ /character/character.php?$args;
  • 12-03-2018, 14:17:04
    #7
    Merhaba.
    Arkadaşım verileri php de get ile çekiyor.
    Aradığı şey argümanların geçmesi değil url bölümleyip php get olarak göndermek.
    Bunun çok doğru bir yöntem olmadığını düşünüyorum fakat wordpress yada diğer sistemlerde nasıl çalıştığını bilmiyoruz. Her '/' php de bölümlenebilir fakat sanırım bu da perfomans açısından doğru olmaz.