近期博客迁移到 racknerd vps,迁移后固定链接伪静态访问 404。
排查后原因是 Nginx 配置问题,期间还遇到跳转 https:// 无限死循环的问题,故记录正确完整 Nginx 配置。
server { listen 80; listen [::]:80; root /var/www/html; #你的 wordpress 目录 #server_name xuanyuan.me; #上面这个注释不能去掉,否则两个命名空间会导致https跳转无限死循环 index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } rewrite ^(.*) https://$host$1 permanent; #跳转 https } server { listen 443 ssl http2; listen [::]:443 ssl http2; root /var/www/html; server_name xuanyuan.me; index index.php index.html index.htm; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_certificate /etc/nginx/ssl/xxx.pem; #你的证书目录 ssl_certificate_key /etc/nginx/ssl/xxx.key; #你的证书目录 add_header Referrer-Policy "no-referrer" always; add_header X-Content-Type-Options "nosniff" always; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\. { deny all; } location ~* /(?:uploads|files)/.*\.php$ { deny all; } location / { try_files $uri $uri/ /index.php?$args; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } location /blog { #注意:此处/blog为wordpress目录 try_files $uri $uri/ /blog/index.php?$args; #注意:此处/blog为wordpress目录 } location ~ \.php$ { include fastcgi.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; #修改为你的php版本 fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } rewrite /wp-admin$ $scheme://$host$uri/ permanent; }