Nginx – wordpress in einem Unterverzeichnis, welche Daten sollen übergeben werden?

Lesezeit: 5 Minuten

Ich habe so viele verschiedene Dinge ausprobiert. Der Punkt, an dem ich gerade bin, ist folgender:

location ^~ /wordpress {
    alias /var/www/example.com/wordpress;
    index index.php index.html index.htm;
    try_files $uri $uri/ /wordpress/index.php;

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(/wordpress)(/.*)$;
        fastcgi_param SCRIPT_FILENAME /var/www/example.com/wordpress/index.php;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

Im Moment werden alle Ressourcen, soweit ich das beurteilen kann (Bilder usw.), korrekt geladen. Und http://www.example.com/wordpress lädt WordPress, aber eine Seite, die sagt “Seite nicht gefunden”. (WordPress wird dafür jedoch verwendet). Wenn ich irgendwelche Post-URLs versuche, erhalte ich das gleiche Ergebnis, “Seite nicht gefunden”. Ich weiß also, dass das Problem darin besteht, dass WordPress die Daten über den Pfad oder so etwas nicht erhält. Ein weiteres mögliches Problem ist, dass wenn ich laufe example.com/wp-admin.php dann läuft es noch index.php.

Welche Daten müssen übergeben werden? Was kann hier falsch laufen?

Nginx wordpress in einem Unterverzeichnis welche Daten sollen ubergeben
Kolbyjack

Da das Ende Ihres Standort-Alias ​​übereinstimmt, sollten Sie einfach root verwenden. Und auch nicht alles wird über index.php auf WordPress afaik geleitet. Wenn Sie nicht wissen, dass Sie Pfadinformationen benötigen, tun Sie dies wahrscheinlich auch nicht. Ich denke, du willst so etwas wie:

location @wp {
  rewrite ^/wordpress(.*) /wordpress/index.php?q=$1;
}

location ^~ /wordpress {
    root /var/www/example.com;
    index index.php index.html index.htm;
    try_files $uri $uri/ @wp;

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass 127.0.0.1:9000;
    }
}

oder wenn Sie wirklich Pfadinformationen benötigen (URLs sehen aus wie /wordpress/index.php/foo/bar):

location ^~ /wordpress {
    root /var/www/example.com;
    index index.php index.html index.htm;
    try_files $uri $uri/ /wordpress/index.php;

    location ~ \.php {
        fastcgi_split_path_info ^(.*\.php)(.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_pass 127.0.0.1:9000;
    }
}

BEARBEITEN: Erster Server {} aktualisiert, um das anfängliche /wordpress von uri zu entfernen und den Rest als q param zu übergeben

EDIT2: Benannte Standorte sind nur auf Serverebene gültig

  • Ich versuche das (Ihr erstes), aber ich erhalte immer wieder die 404 nicht gefundene WordPress-Seite. Es könnte damit zu tun haben, dass ich den Blog von einer anderen Domain in eine Domain mit einem Unterverzeichnis verschoben habe.

    – Matthew

    27. Mai 2011 um 18:09 Uhr

  • Ich denke, vielleicht muss WordPress das anfängliche /wordpress entfernt haben. Habe den ersten Server bearbeitet, um das zu tun.

    – Kolbyjack

    27. Mai 2011 um 19:48 Uhr

  • Das ist die endgültige Antwort!!! Ich habe die erste Lösung mit „location /wordpress“ anstelle von „location ^~ /wordpress“ und „alias“ anstelle von „root“ verwendet.

    – mikro

    28. November 2013 um 8:30 Uhr

  • Die erste Lösung hat beim ersten Mal perfekt funktioniert – danke! 🙂

    – Bobby DeVeaux

    20. Februar 2015 um 10:16 Uhr

  • Ihre zweite Lösung funktioniert perfekt, auch mit den WP-API-Plugin-URLs. Danke!

    – Michael Perrin

    23. Oktober 2015 um 13:33 Uhr

Nginx wordpress in einem Unterverzeichnis welche Daten sollen ubergeben
Anton Smith

Alter, das funktioniert für einen WordPress-Blog in einem Unterverzeichnis des Magento-Root-Ordners!

server {
    listen 80;
    server_name my-site.co.uk;
    rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www
}

server {
    listen 80 default;
    client_max_body_size 8M;
    ## SSL directives might go here
    server_name www.my-site.co.uk; ## Domain is here twice so server_name_in_redirect will favour the www
    root /var/www/my-site/magento;

    location / {
        index index.html index.php; ## Allow a static html file to be shown first
       try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
       expires 30d; ## Assume all files are cachable
    }

    location  /wordpress {
              index index.php index.html index.htm;
             try_files $uri $uri/ /wordpress/index.php;
             }

    ## These locations would be hidden by .htaccess normally
    location ^~ /app/                { deny all; }
    location ^~ /includes/           { deny all; }
    location ^~ /lib/                { deny all; }
    location ^~ /media/downloadable/ { deny all; }
    location ^~ /pkginfo/            { deny all; }
    location ^~ /report/config.xml   { deny all; }
    location ^~ /var/                { deny all; }

    location /var/export/ { ## Allow admins only to view export folder
        auth_basic           "Restricted"; ## Message shown in login window
        auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
        autoindex            on;
    }

    location  /. { ## Disable .htaccess and other hidden files
        return 404;
    }


    location @handler { ## Magento uses a common front handler
        rewrite / /index.php;
    }

    location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
        rewrite ^(.*.php)/ $1 last;
    }

    location ~ .php$ { ## Execute PHP scripts
        if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss

        expires        off; ## Do not cache dynamic content
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_param  HTTPS $fastcgi_https;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  MAGE_RUN_CODE default; ## Store code is defined in administration > Configuration > Manage Stores
        fastcgi_param  MAGE_RUN_TYPE store;
        include        fastcgi_params; ## See /etc/nginx/fastcgi_params
    }
}

  • Wenn jemand die Kernkonfigurationsdatei haben möchte, die ich für Nginx mit dieser Site-Konfiguration verwende, lass es mich einfach wissen.

    – Anton Smith

    26. März 2013 um 15:17 Uhr


  • funktioniert für mich, ich benutze Magento nicht, aber dieser Block für WordPress ist hilfreich. Vielen Dank

    – Risnandar

    5. August 2013 um 16:10 Uhr

  • Daumen hoch von mir! Sehr einfach und unkompliziert, dieser WordPress-Teil und hat perfekt für meine Seite funktioniert. Ich fand das Beispiel bei codex.wordress.com sehr komplex!

    – Iljan Andrejew

    17. Juli 2014 um 20:31 Uhr

  • @AntonySmith Kannst du die Kernkonfiguration von Magento und WordPress im Unterordner posten. Ich kann es nicht genau herausfinden und suche seit einer Woche.

    – 5ud0

    28. Juli 2016 um 6:40 Uhr

1646180347 174 Nginx wordpress in einem Unterverzeichnis welche Daten sollen ubergeben
NightKnight auf Cloudinsidr.com

Ich hatte das gleiche Problem und das hat es bei mir behoben:

  1. Öffnen Sie die NGINX-Konfigurationsdatei für Ihre Site. Fügen Sie innerhalb des Serverblocks den Pfad zu Ihrem Stammverzeichnis hinzu und legen Sie die Prioritätsreihenfolge für Dateien fest:

    root /mnt/www/www.domainname.com;
    index  index.php index.html index.htm;
    
  2. Erstellen Sie einen leeren Standortblock Vor alle Ihre anderen Standortblöcke:

    location /latest {
    # Nothing in here; this is to avoid redirecting for this location
    }
    
  3. Empfehlen Sie das Root-Verzeichnis in Ihrem Standort / Block und fügen Sie die Umleitung hinzu, damit es so aussieht:

    location / {
    # root   /mnt/www/www.domainname.com;
    index  index.php index.html index.htm;
    rewrite ^/(.*)$ http://www.domainname.com/latest/$1 redirect;
    }
    
  4. Stellen Sie sicher, dass Ihr Standort ~ .php$ Block auf seine Wurzel zeigt

    root /mnt/www/www.domainname.com;
    

Dies hat es für mich behoben.

906380cookie-checkNginx – wordpress in einem Unterverzeichnis, welche Daten sollen übergeben werden?

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

Privacy policy