环境
我用的环境是phpstudy
环境:nginx 和 php
默认的话是在nginx里的配置文件里直接配置,我们这里创建了本地域名,所以需要在对应的域名里边的配置文件进行修改。
域名下的配置文件
如果有创建域名,那么配置文件在vhosts的创建的域名下边。
代码如下:
server {
listen 80;
server_name www.static.com;
root "D:/phpstudy_pro/WWW/www.static.com";
location / {
index index.php index.html error/index.html;
error_page 400 /error/400.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 500 /error/500.html;
error_page 501 /error/501.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
error_page 504 /error/504.html;
error_page 505 /error/505.html;
error_page 506 /error/506.html;
error_page 507 /error/507.html;
error_page 509 /error/509.html;
error_page 510 /error/510.html;
include D:/phpstudy_pro/WWW/www.static.com/nginx.htaccess;
autoindex off;
#这个是伪静态的配置
rewrite ^(.*)$ $1/index.php last;
}
location ~ .php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
nginx使用Rewrite重写
Rewrite主要的功能是实现URL重写,Nginx 的 Rewrite 规则采用 PCRE Perl 兼容正则表达式的语法进行规则匹配,如相使用 Nginx 的 Rewrite 功能,在编译 Nginx 前要编译安装 PCRE 库。Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。
rewrite只能放在server{},location{},if{}中
规则
rewrite ^(.*)1/index.php last;
第一个参数是旧的页面地址 如上述的 ^(.*)$
第二个参数是展现内容的地址 $1/index.php
$1表示的是前面正则分组内容
注意事项:第一个参数必须是一个正则表达式
更复杂的案例
例如:我输入的地址是 www.static/daoshi-shen… 就会显示 www.static/daoshi.php 里边
规则如下:
#这个是伪静态的配置
rewrite ^(.*)/daoshi-(\w+)/$ $1/daoshi.php last;
如下是daoshi.php的代码:
结果如下: