Nginx下访问源代码.html文件重定向到相对目录下.php文件
请求报错404故障
故障描述:
LNMP环境下发布商城源代码,通过web请求访问.html文件报404错误请求文件不存在,在源代码里只存在.php文件
例子图:
程序默认访问时根路径下的这个.html文件,但这个文件类型在源代码里并不存,源代码里只有.php文件类型。
当你手工将后缀名改成.php之后就可以正常显示网页内容;
经过排查是缺少伪静态规则
#“/”一般匹配 “=”绝对匹配
location / {
# if判断请求文件是否存在,存在为真则不执行下面的重写,不存在则为假执行下面重写语句
if (!-e $request_filename) {
#将访问/根目录下的 .html 文件重定向到相对路径下的 .php 文件,
rewrite ^/(.*)\.html$ /$1.php last;
}
}
注释:
"last" 代表匹配成功后又从头开始去匹配,当匹配不成功则跳到下一条
"break" 代表跳过这段重写规则执行下一条重写规则
"^" 代表正则表达式开始
"/(.*)\.html " 代表根目录下所有 .html 文件类型
"$" 代表一个正则表达式结束
"/" 代表根目录
"$1" 代表调用第一个参数,也就是前一个正则表达式,或者说是"/(.*)\.html "这里面的内容
".php" 重定向成这个类型的文件
加入伪静态规则之后重启服务再去访问:
故障解决!