使用 nginx 的 wordpress 内部重定向

使用 nginx 的 wordpress 内部重定向

我有一个 WordPress 网站,其永久链接设置为帖子名称。

使用 Nginx 重写,我尝试进行内部重定向(浏览器 URL 不变),但到目前为止,还没有成功。

这有效,但 URL 会改变

location ~ ^/u/(.*) {
    rewrite ^/u/(.*) /p/?username=$1 redirect; 
}

我不明白为什么这不起作用:

location ~ ^/u/(.*) {
    # this returns 404
    rewrite ^/u/(.*) /p/?username=$1 last;
}

整个配置

server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    root /srv/www/html;
    error_log /var/log/nginx/error.log;
    index index.php;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ ^/u/(.*) {
        rewrite ^/u/(.*) /p/?username=$1 last;
        # try_files $uri /p/?username=$1;
    }

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

    location ~ \.php$ {
        client_max_body_size 8M;
        include fastcgi-php.conf;

        # Mitigate https://httpoxy.org/ vulnerabilities
        fastcgi_param HTTP_PROXY "";
        fastcgi_intercept_errors on;
        fastcgi_pass 0.0.0.0:9000;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

我正在编写一个 WordPress 插件,我希望用户输入如下 URLhttps://example.com/u/john71并内部重定向至https://example.com/p/?username=john71

两个都是 WordPress 页面,并且包含一个允许我检索用户名的短代码。

我本可以有https://example.com/p/?username=john71,而是类似这样的:https://example.com/u/john71看起来更好。

欢迎对重写规则或方法提供任何帮助。

答案1

URI 最终被重写为/index.php- 因此 WordPress 永远不会看到额外的内部重写。

WordPress 解析原始请求,该请求通过 REQUEST_URI 参数传递给它(该参数将在您的fastcgi-php.conf文件中定义,可能包含来自另一个名为 的文件中的内容fastcgi_params)。

您可以通过在调用之前直接设置 REQUEST_URI 和 SCRIPT_FILENAME 来实现此功能fastcgi_pass- 例如:

location ~ ^/u/(.*) {
    include fastcgi_params;

    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    fastcgi_param REQUEST_URI /p/?username=$1;

    fastcgi_param HTTP_PROXY "";
    fastcgi_intercept_errors on;
    fastcgi_pass 0.0.0.0:9000;
}

我没有将其包括在内,fastcgi-php.conf因为它可能包含try_files在此不起作用的语句location

相关内容