Nginx umschreiben in Unterordner (404)

Lesezeit: 4 Minuten

Nginx umschreiben in Unterordner 404
Blumenschildkröte

Ich habe einen Site-Host auf a NGINX Server, der früher gut funktionierte, zu entfernen index.php in der nginx-Site-Konfiguration mit try_files.

Aber jetzt werde ich einen Blog hinzufügen, wo die URL sein wird www.foo.com/blogkann ich auf den Blog zugreifen und verwenden index.php?p=.

Aber sobald ich benutze hübsch Permalink mit Nginx Helper, www.foo.com/blog/2013/07/barIch bekomme 404.

server {
  # don't forget to tell on which port this server listens
  listen 80;

  # listen on the www host
  server_name foo.com;

  # and redirect to the non-www host (declared below)
  return 301 $scheme://www.ultra-case.com$request_uri;
}

server {
  # listen 80 default_server deferred; # for Linux
  # listen 80 default_server accept_filter=httpready; # for FreeBSD
  listen 80;

  # The host name to respond to
  server_name www.foo.com;

  # Path for static files
  root /web/foo.com

  #index file
  index index.php;

  #Specify a charset
  charset utf-8;

  # Custom 404 page
  error_page 404 /404.html;

  # Uri Rewrite

  location /blog {
    index index.php;
    try_files $uri $uri/ /blog/index.php?$args;
  }

  location / {
    autoindex on;
    # This is cool because no php is touched for static content.
    # include tihe "?$args" part so non-default permalinks doesn't break when using query string
    try_files $uri $uri/ /index.php?$args;
  }
  location ~ \.php$ {
    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    include fastcgi.conf;
    fastcgi_intercept_errors on;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
  }

  # Include the component config parts for h5bp
  include conf/h5bp.conf;
}

  • root /web/foo.com Semikolon fehlt

    – Mohammad AbuShady

    23. Juli 2013 um 16:01 Uhr

  • @MohammadAbuShady ähm … Entschuldigung für meine Schuld, es ist nur ein Fehler, während ich meinen echten Server-Hostnamen und den Speicherort der Dateien verbergen möchte.

    – Blumenschildkröte

    23. Juli 2013 um 16:43 Uhr

Nginx umschreiben in Unterordner 404
Erecker

Die akzeptierte Antwort leitet alles durch index.php.
Dadurch werden bestimmte Skript-Includes beschädigt, die wp-admin Skript ist einer von ihnen.

Sie können Folgendes verwenden:

location /blog/ {
    index index.php;
    try_files $uri $uri/ /blog/index.php?$args;
}

  • Vielen Dank! Ich habe alle anderen Lösungen ausprobiert und diese hat mir geholfen.

    – Tico

    21. August 2015 um 1:14 Uhr

  • Ich habe 5 Stunden damit verbracht, das herauszufinden. Danke danke danke.

    – AJB

    19. April 2016 um 1:37 Uhr

  • Tausend Dank! Das ist genau das, was ich brauchte.

    – Vishal Patel

    20. Oktober 2016 um 5:35 Uhr

  • Das erspart mir meine Kopfschmerzen!! Danke Million und Up Vote!

    – 502_Geek

    25. Oktober 2016 um 7:32 Uhr

  • Meinen Tag gerettet! Danke

    – gunjot singh

    16. Dezember 2016 um 11:19 Uhr

Ähm … Vielen Dank für alle Kommentare und Antworten. Aber schließlich verwende ich diese Methode, damit es funktioniert

location /blog {
    index index.php;
    rewrite ^/blog/(.*)+$ /blog/index.php?$1; # it finally works
    # return 200 $request_uri; # it is for inspect what $request_uri is
    # try_files $uri $uri/ /blog/index.php$request_uri$is_args$args; # it gets 500 server error
}

Bitte weisen Sie darauf hin, wenn die aktuelle Einstellung Probleme hat. Danke!

  • Ich erhalte “Diese Webseite hat eine Umleitungsschleife”.

    – Ryan

    14. Mai 2014 um 15:56 Uhr

  • @Ryan entfernt alle anderen Konfigurationen aus diesem Server { } Block, da sie danach immer noch gelesen werden – was zu Endlosschleifen führt. Ich habe es umgangen, indem ich den Standort /blog { } für den Blog und den Standort / { } für den Hauptindex festgelegt habe.

    – Ricky Odin Matthews

    26. August 2015 um 10:47 Uhr

  • Dies hat Variablen für mich nicht richtig übergeben. location /blog/ { try_files $uri $uri/ /blog/index.php?$args; } am Ende funktioniert

    – Josch

    17. September 2015 um 1:30 Uhr


  • Ihr Code funktioniert gut, außer /wp-admin/ Umleitungsschleife.

    – Ich bin Stapel

    15. März 2016 um 12:30 Uhr

Ich würde Folgendes vorschlagen, um alle Permalinks im Unterordner /blog abzufangen

location /blog {
    index index.php;
    try_files $uri $uri/ /blog/index.php?$args;
}

1645912746 448 Nginx umschreiben in Unterordner 404
Mohammad AbuShady

Versuchen Sie dies, ich habe meine Antwort geändert, um zu versuchen, dasselbe Verhalten nachzuahmen, das Sie in Ihrer Umschreibung verwenden.

location ~ /blog(.*) {
    index index.php;
    try_files $uri /blog/index.php?$1&$args;
}

Versuche dies

location /api {
    # example: http://demo.com/api/channels/dmzb
    root   /data/webserver/demo.com/api/web;
    rewrite ^/api/(.*) /$1 break;
    try_files $uri $uri/ /api/index.php?$args;

    location ~ ^/api/index\.php {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi.conf;

        # fix request_uri
        set $changed_request_uri $request_uri;
        if ($changed_request_uri ~ ^/api(.*)) {
            set $changed_request_uri $1;
        }
        fastcgi_param REQUEST_URI $changed_request_uri;

        # fix script_filename
        fastcgi_split_path_info ^(?:\/api\/)(.+\.php)(.*);
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }
}

Nginx umschreiben in Unterordner 404
Jesus Germade

Denken Sie an PHP, ein Umschreiben ist bei so etwas nicht erforderlich:

location /app/ {
  include fastcgi_params;
  fastcgi_param  SCRIPT_FILENAME /path/to/your/app/index.php;
  fastcgi_pass php;
}

Mit folgendem Fastcgi-Pass

upstream php {
    server unix:/var/run/php5-fpm.sock;
}

1645912747 466 Nginx umschreiben in Unterordner 404
Amq

Eine universelle Lösung für hübsche URLs in der Stamm- und einer Unterordnerebene:

set $virtualdir "";
set $realdir "";

if ($request_uri ~ ^/([^/]*)/.*$ ) {
        set $virtualdir /$1;
}

if (-d "$document_root$virtualdir") {
        set $realdir "${virtualdir}";
}

location / {
        try_files $uri $uri/ $realdir/index.php?$args;
}

868660cookie-checkNginx umschreiben in Unterordner (404)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy