使用 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 插件,我希望用戶輸入諸如https://example.com/u/john71並內部重定向到https://example.com/p/?使用者名稱=john71

兩個都p是 WordPress 頁面,並且p包含一個允許我檢索使用者名稱的短代碼。

我本來可以有https://example.com/p/?使用者名稱=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

相關內容