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
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;
}
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;
}
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