Bu çok basit .htaccess'i Nginx'e nasıl dönüştürebilirim?

May 20 2019

Bunu kullanıyorum .htaccessURL'ye sonra her şeyi geçmesi $param, böylece example.com/news/idolarak PHP gider $_GET['param']='news/id'. Ama Nginx beni her zaman 404 sayfasına atıyor.

Benim .htaccess:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule  (.*) index.php?param=$1

Nginx'te denediğim şey default.conf:


server {
        listen 80;
        listen [::]:80;
    server_name domain.com;
        root    /var/www/html;

        location / {
                if (!-f $uri){
                        set $rule_0 1$rule_0;
                }
                if (!-d $uri){
                        set $rule_0 2$rule_0;
                }
                if ($rule_0 = "21"){
                rewrite ^(.*) index.php?param=$1;
                }
        }
}

Yanıtlar

1 MichaelHampton May 20 2019 at 09:08

ifBurada hiç kullanmıyorsunuz ve dosyaların varlığını manuel olarak kontrol etmiyorsunuz. Bu ortak model yerine tarafından ele alınır try_files.

Örneğin:

location / {
    try_files $uri $uri/ /index.php?param=$uri;
}

( /Web uygulamanız bozuksa ve URI'de başı işleyemiyorsa, mümkünse web uygulamasını düzeltin veya değilse bu soruyu görün .)

1 SandroBenevides May 21 2019 at 01:15

Şu kuralları kullanarak düzeltebilirim:

server{
try_files $uri $uri/ @rewrite;
  location @rewrite {
  rewrite ^/(.*)$ /index.php?_url=$1;
  }
}

İçinde herhangi bir talimat olmayan konumunuz / {} varsa, onu kaldırın.