伪静态是指通过URL重写技术,将动态URL转换为看似静态的URL格式,既保持静态URL的优点(如SEO友好),又实际执行动态脚本。以下是Nginx伪静态设置的详细方法:
确认Nginx支持rewrite模块
nginx -V
命令查看已安装模块在配置文件中设置伪静态规则
/etc/nginx/nginx.conf
或/etc/nginx/sites-available/
目录下)location / {
try_files $uri $uri/ /index.php?$args;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
}
}
rewrite
指令基本格式:
rewrite 正则表达式 替换目标 [flag];
常用flag参数:
last
- 停止处理当前rewrite指令集break
- 停止处理当前rewrite指令集redirect
- 返回302临时重定向permanent
- 返回301永久重定向测试配置文件语法:
nginx -t
重新加载Nginx配置:
nginx -s reload
# 或
systemctl reload nginx
try_files
指令通常比复杂的rewrite规则更高效开启Nginx rewrite日志:
error_log /var/log/nginx/rewrite.log notice;
rewrite_log on;
使用curl测试URL重写效果:
curl -I http://yourdomain.com/path
通过以上设置,您可以实现Nginx服务器的伪静态功能,提升网站的用户体验和SEO效果。