通过用户发请求的变量 $request _filename
location / { #当用户访问错误页面,自动跳转到首页 if ( !-e $request_filename ) { rewrite ^/(.*)$ https://www.test.com/ ; } }
-e 判断是否存在, !-e 取反(感叹号和-e必须连着一起写)
修改虚拟主机配置文件:
server { listen 443 ssl; listen 80; server_name www.test.com; #指定家目录所在位置 root /data/testcom/; #秘钥和证书的具体位置 ssl_certificate /etc/nginx/ssl/test.com.crt; ssl_certificate_key /etc/nginx/ssl/test.com.key; ssl_session_cache shared:sslcache:20m; #ssl会话超时时间 10分钟 ssl_session_timeout 10m; #生成独立的日志文件,采用main格式,这个格式是在nginx的主配置文件中定义的 access_log /var/log/nginx/test.com.log main; #设置当使用https访问任意目录,自动跳转到https location / { #当用户访问错误页面,自动跳转到首页 if ( !-e $request_filename ) { rewrite ^/(.*)$ https://www.test.com/ ; } } }
测试访问:
#直接访问主页 [20:13:13 root@localhost certs]#curl www.test.com This is the test.com test page #访问一个不存在的错误页面,会自动跳转到主页 [20:13:19 root@localhost certs]#curl www.test.com/aaa -Lk This is the test.com test page