Przeczytałem wiele pytań tutaj w StackOverflow, a także wypróbowałem odpowiedzi na nie, ale nadal nie mogę osiągnąć tego, czego potrzebuję.

Mam następujący prosty kod routingu napisany w PHP:

$page = $_GET['page'];
echo "<section id='content' class='container'>";

if ( isset($page) )
{
    switch($page)
    {
        case "guides":
            require_once("v/pages/guides/index.php");
            break;
        case "error-list-dpto":
            require_once("v/pages/error-list/error-list-dpto.php");
            break;
        //other cases here...
    }
}
echo "</section>";

Poniżej mam prostą konfigurację nginx:

server {  
    listen 80;
    listen [::]:80;
    root  /app/mylogs;
    server_name localhost;

    index index.php;

    location /(.*) {
            try_files $uri $uri/ /index.php?page=$1 =404;
    }

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }

    location ~ /\.ht {
                    deny all;
    }
}

Chcę uzyskać dostęp do czegoś takiego jak „http://example.com/guides" i ustawić zmienną $page otrzymuj słowo „przewodniki” jako wartość.

Ale mój kod NGINX nie działa. Kiedy próbuję uzyskać dostęp do powyższego adresu, otrzymuję numer 404 od NGINX.

Co ja robię źle?

Dziękuję Ci.

0
WitnessTruth 20 listopad 2019, 15:40

1 odpowiedź

Najlepsza odpowiedź

Udało mi się osiągnąć to, czego potrzebuję, używając następujących linii pliku konf NGINX:

rewrite ^/page/(.*)$ /index.php?page=$1 last;
location / {
    try_files $uri $uri/ =404;
}
0
WitnessTruth 20 listopad 2019, 17:08