Điểm:1

chuyển hướng nội bộ wordpress bằng nginx

lá cờ mx

Tôi có một trang web WordPress với permalinks được đặt thành Tên bài đăng.

Sử dụng Nginx viết lại, tôi đang cố gắng chuyển hướng nội bộ (không thay đổi URL trình duyệt), nhưng cho đến nay, tôi vẫn thất bại.

Điều này hoạt động, nhưng URL thay đổi

vị trí ~ ^/u/(.*) {
    viết lại ^/u/(.*) /p/?username=$1 chuyển hướng; 
}

Tôi không hiểu tại sao điều này không hoạt động:

vị trí ~ ^/u/(.*) {
    # cái này trả về 404
    viết lại ^/u/(.*) /p/?username=$1 last;
}

Toàn bộ cấu hình

người phục vụ {
    nghe 80;
    nghe [::]:80;
    server_name example.com;

    gốc/srv/www/html;
    error_log /var/log/nginx/error.log;
    chỉ số index.php;

    vị trí = /favicon.ico {
        log_not_found tắt;
        truy cập_đăng xuất;
    }

    vị trí = /robots.txt {
        chấp nhận tất cả;
        log_not_found tắt;
        truy cập_đăng xuất;
    }

    vị trí ~ ^/u/(.*) {
        viết lại ^/u/(.*) /p/?username=$1 last;
        # try_files $uri /p/?username=$1;
    }

    địa điểm / {
        try_files $uri $uri/ /index.php?$args;
    }

    vị trí ~ \.php$ {
        client_max_body_size 8M;
        bao gồm fastcgi-php.conf;

        # Giảm thiểu lỗ hổng https://httpoxy.org/
        fastcgi_param HTTP_PROXY "";
        bật fastcgi_intercept_errors;
        fastcgi_pass 0.0.0.0:9000;
    }

    vị trí ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        hết hạn tối đa;
        log_not_found tắt;
    }
}

Tôi đang viết một plugin WordPress và tôi muốn người dùng nhập các URL như https://example.com/u/john71 và chuyển hướng nội bộ đến https://example.com/p/?username=john71

Cả hai bạnP là các trang WordPress và P chứa một mã ngắn cho phép tôi truy xuất tên người dùng.

tôi có thể có https://example.com/p/?username=john71, nhưng đại loại như: https://example.com/u/john71 trông tốt hơn.

Mọi trợ giúp về quy tắc viết lại hoặc cách tiếp cận đều được hoan nghênh.

lá cờ us
Bạn nên thực hiện hoàn toàn phần định tuyến yêu cầu tùy chỉnh trong WordPress. Nếu bạn phân chia logic giữa nginx và WordPress, bạn đang buộc người dùng của mình thêm cấu hình bổ sung. Hãy xem https://wordpress.stackexchange.com/questions/26388/how-to-create-custom-url-routes chẳng hạn.
Điểm:0
lá cờ jp

URI cuối cùng được viết lại thành /index.php - do đó, việc viết lại nội bộ bổ sung không bao giờ được nhìn thấy bởi WordPress.

WordPress phân tích cú pháp yêu cầu ban đầu, yêu cầu này được chuyển tới nó trong tham số REQUEST_URI (sẽ được xác định trong fastcgi-php.conf tập tin, mà có thể bao gồm nó từ một tập tin khác được gọi là fastcgi_params).

Bạn có thể thực hiện công việc này bằng cách đặt trực tiếp REQUEST_URI và SCRIPT_FILENAME trước khi gọi fastcgi_pass - Ví dụ:

vị trí ~ ^/u/(.*) {
    bao gồm fastcgi_params;

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

    fastcgi_param HTTP_PROXY "";
    bật fastcgi_intercept_errors;
    fastcgi_pass 0.0.0.0:9000;
}

tôi chưa bao gồm fastcgi-php.conf vì nó có thể chứa một try_files tuyên bố sẽ không hoạt động trong này địa điểm.

lá cờ mx
Cảm ơn, Richard. Đó là một ý kiến ​​hay, nhưng tôi không thể thực hiện được; Tôi liên tục nhận được Không tìm thấy (404). Tôi đã tìm thấy plugin này: https://wordpress.org/plugins/redirection/ thực hiện chính xác những gì tôi muốn làm.
Ivan Shatsky avatar
lá cờ gr
`SCRIPT_FILENAME` phải chứa tên tệp đầy đủ với đường dẫn, `$document_root/index.php` thay vì `/index.php` trong trường hợp này.
Richard Smith avatar
lá cờ jp
Ối! Đã sửa. Cảm ơn @IvanShatsky
lá cờ mx
Tôi đã thử với `$document_root/index.php`, nhưng tôi cũng nhận được 404. Nó hoạt động khi tôi thay `/p/?username=$1` bằng `p=2154` (2154 là id của trang). Tôi không biết đủ về định tuyến nội bộ WordPress. Plugin `redirection` hoạt động tốt nên tôi tạm thời giải quyết vấn đề đó.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.