• 15-04-2020, 04:45:36
    #1
    Aşağıdaki kodla rewrite yaptığım zaman yeni sayfa "site.com/arama/kelime/" çalışır hale geliyor buraya kadar sorun yok.

    Fakat "site.com/arama.php?q=kelime" eski sayfadan gelenleri yeni sayfaya "site.com/arama/kelime/" yönlendirmiyor.

    Bu yönlendirmeyi Nginx ile yapabilir miyim? Google iki sayfayı da indexlemiş site çöp oldu gitti.

    location / {
    rewrite ^/arama/(.*)/$   /arama.php?q=$1;
    }
  • 15-04-2020, 05:19:55
    #2
    Developer
    location /arama {
        if ($arg_q) {
            rewrite ^(.*)$ /arama/$arg_q/? permanent;
        }
        rewrite ^/arama/(.*)/$ /arama.php?q=$1 break;
    }
  • 15-04-2020, 05:39:16
    #3
    Hocam verdiğiniz kodu ekledim düzelmedi nerede hata yaptım bilmiyorum.

    server {
    listen 80;
    server_name indir.test *.indir.test;
    
    root home/indir;
    index index.php index.html index.htm;
    autoindex on;
    
    location / {
    rewrite ^([^.]*[^/])$                               $1/ permanent;
    rewrite ^/yonetim/$                             /yonetim/index.php;
    rewrite ^/sayfa/([0-9]+)/$                           /index.php?sayfa=$1;
    rewrite ^/arama/(.*)/sayfa/([0-9]+)/$         /arama.php?q=$1&sayfa=$2;
    rewrite ^/arama/(.*)/$                                /arama.php?q=$1;
    rewrite ^/(.*)/$                                        /single.php?sef=$1;
    rewrite ^/sitemap.xml$                             /sitemap.php;
    rewrite ^/robots.txt$                                 /robots.php;
    rewrite ^/$                                                /index.php;
    
    }
    
    location /arama {
    if ($arg_q) {
    rewrite ^(.*)$ /arama/$arg_q/? permanent;
    }
    rewrite ^/arama/(.*)/$ /arama.php?q=$1 break;
    }
    Kendi kodumu "rewrite ^/arama/(.*)/$ /arama.php?q=$1;" bunu silip öyle denedim yine olmadı.
  • 15-04-2020, 06:23:39
    #4
    Developer
    DesignX adlı üyeden alıntı: mesajı görüntüle
    Hocam verdiğiniz kodu ekledim düzelmedi nerede hata yaptım bilmiyorum.
    nginx reload etmemiş olabilirsin veya sürümü çok eskidir. Az önce test ettim sorunsuz olarak yönlendirdi.

    Alternatif çözüm olsun diye bırakıyorum arama.php içerisine <?php den sonra
    if (isset($_GET['q']) && !empty($_GET['q']) && is_string($_GET['q']) && strlen($_GET['q']) > 0 && stristr($_SERVER['REQUEST_URI'], 'arama.php')) {
        header('HTTP/1.1 301 Moved Permanently');
        if (isset($_GET['sayfa']) && !empty($_GET['sayfa']) && is_numeric($_GET['sayfa']) && $_GET['sayfa'] > 1) {
            header('Location: /arama/' . urlencode($_GET['q']) . '/sayfa/' . urlencode($_GET['sayfa']) . '/');
        } else {
            header('Location: /arama/' . urlencode($_GET['q']) . '/');
        }
        exit();
    }
  • 15-04-2020, 13:23:47
    #5
    Hocam telefonla bir arkadaşı aradım senin verdiğin kodu da gönderdim bu şekilde çalıştırdı. Location'un içerisinde if ($arg_q) çalışmıyor dışına ekledim en yukarıya o şekilde çalıştı. Hocam yardımın çok teşekkürler saolasın valla elinden geleni yaptın.

    if ($arg_q) {
    rewrite ^(.*)$ /arama/$arg_q/? permanent;
    }
  • 15-04-2020, 16:36:05
    #6
    Developer
    DesignX adlı üyeden alıntı: mesajı görüntüle
    Hocam telefonla bir arkadaşı aradım senin verdiğin kodu da gönderdim bu şekilde çalıştırdı. Location'un içerisinde if ($arg_q) çalışmıyor dışına ekledim en yukarıya o şekilde çalıştı. Hocam yardımın çok teşekkürler saolasın valla elinden geleni yaptın.

    if ($arg_q) {
    rewrite ^(.*)$ /arama/$arg_q/? permanent;
    }
    Sorunu çözmene sevindim. Diğer türlü de çalışıyordu test ettim, başka kurallarla çakışmış olabilir.
    * Haberim olmaksızın ticaret puanı göndermişsiniz. 2 üye arasında maddi bir işlem gerçekleşmeden ticaret bildiriminde bulunmak yasak. Artniyet olmadan gönderdiğinizi farkındayım, kurallar herkes için var (İlgili bildirime itirazım)