没有 index.php 的 Nginx Wordpress 永久链接

Nginx Wordpress Permalinks without index.php

我有 nginx 运行 php 7 fpm。 我的 Wordpress permalinks 设置为 /%postname%/。假设我的域是 example.com 我想要 permalinks 这样的:example.com/postname/ 但这会导致错误。我可以用这个 link 找到 post:example.com/index.php?postname/

如何删除 link 中的 index.php?

编辑

我的 Nginx 配置

server {
        server_name localhost;
        root /var/www/;
        index index.html index.htm index.php;

        location ~\.php$ {
                try_files $uri =404;
                fastcgi_pass php:9000;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                fastcgi_param REQUEST_URI $args;
        }

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

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

你的问题暗示 WordPress 安装在 location /,所以我不确定为什么你也有 location /wordpress

您的配置存在一些问题。

REQUEST_URI 的值应设置为 $request_uri,这可能已经是 fastcgi_params 文件中的默认值。这是 index.php 用来解码漂亮永久链接的参数。

删除行fastcgi_param REQUEST_URI $args;

您的 try_files 语句缺少 ?。使用:

try_files $uri $uri/ /index.php?$args;

或者:

try_files $uri $uri/ /index.php;

我发现 WordPress 不需要将 $args 传递给 /index.php