所以我在 / usr / share / nginx / html 中设置了目标网页,并在 / usr / share / nginx / blog
中设置了博客正如您在下面的配置中所看到的,博客被配置为别名。每当有人试图访问博客时,例如: you.com/blog ,就会将他们带到 you.com/blog / 。仍然没有什么大不了的担心。所以在wordpress中,网址设置为简单。一切都有效,直到这一点没有任何问题。现在,由于美观,网址需要看起来更好,即:名字后。例如: you.com/blog/name-of-my-post 。如果配置在wordpress中从plain更改为post-name,则nginx会给出带有以下消息的404
2017/05/03 09:28:00 [error] 2869#0: *1492652 "/usr/share/nginx/blog/my-post/index.html" is not found (2: No such file or directory), client: 73.1.2.24, server: you.com, request: "GET /blog/my-post/ HTTP/1.1", host: "you.com", referrer: "https://you.com/blog/"
我注意到index.html最终会被附加。在php / blog块中尝试了不同的更改之后,我仍然坚持使用404.这是我们正在运行的配置。
server {
root /usr/share/nginx/html;
listen 443 ssl;
ssl_protocols TLSv1.1 TLSv1.2 ;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_certificate /var/keys/api_ssl.crt;
ssl_certificate_key /var/keys/api_priv.key;
server_name you.com;
index index.html index.php index.htm;
location / {
try_files $uri $uri.html $uri/ uri.html = 404;
}
location /blog {
alias /usr/share/nginx/blog;
if (!-e $request_filename) {
rewrite /blog/wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^(/[^/]+)?(/wp-.*) $2 last;
rewrite ^(/[^/]+)?(/.*\.php) $2 last;
}
try_files $uri $uri/ /index.php?$args;
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_index index.php;
$document_root/$fastcgi_script_name;
}
}
}
如何获取 / blog / my-post-here 而不是简单类型 you.com/blog/?p=10
备注:博客( / usr / share / nginx / blog )&网站( / usr / share / nginx / html 纯HTML)位于2个单独的文件夹中。你不应该在 / blog 块之外做任何php。
编辑2017年5月 - 4月
修改后的nginx.config成功重定向到博客/后名
server {
root /usr/share/nginx/html;
listen 443 ssl;
ssl_protocols TLSv1.1 TLSv1.2 ;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_certificate /var/keys/api_ssl.crt;
ssl_certificate_key /var/keys/api_priv.key;
server_name xyz.com;
index index.html index.php index.htm;
location / {
try_files $uri $uri.html $uri/ uri.html = 404;
}
location /blog {
alias /usr/share/nginx/blog;
index index.html index.php;
try_files $uri $uri/ @blog;
expires 30d;
if ($uri ~ "^/index.php") {
rewrite / redirect;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_index index.php;
}
}
location @blog {
rewrite ^/blog/(.*) /blog/index.php?$args;
}
答案 0 :(得分:1)
您的nginx配置似乎有误。
1)从博客中取出你的块
location ~ \.php {fastcgi_pass 127.0.0.1:9000;include fastcgi_params;fastcgi_index index.php;$document_root/$fastcgi_script_name;
}
并使用以下代码替换您的块。
location /blog {index index.html index.php;try_files $uri $uri/ @blog;expires 30d;if ($uri ~ "^/index.php"){rewrite / redirect;}}location @blog {rewrite ^/blog/(.*) /blog/index.php?$args;
}
它会有所帮助
答案 1 :(得分:0)
如果您保存了永久链接,那么它会在网址中显示帖子标题,应该是以下代码:
location / {
try_files $uri $uri/ /index.php?$args;
}
看起来不像这样:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Name>Test</Name>
</root>
您不需要手动设置/ blog,如果您在nginx配置中具有上述内容,wordpress将为您执行此操作。如果你愿意,我可以上传我的整个配置。
答案 2 :(得分:-1)
似乎您的网站有明确的权限或重写模块问题,因此无法重写。 htaccess 文件。请咨询您的托管服务提供商,并要求重新启用 Apache 或他们正在使用的服务器的模块。并且还要求对root文件夹授予写入权限,以便wordpress可以在您更改永久链接时创建。 htaccess 文件。
希望它有所帮助。