杰拉斯的博客
nginx下实现pathinfo及WordPress、Typecho永久链接(伪静态)
后台技术
今晚配置了下LNMP环境下的阿里云服务器,将网站(使用的是自己写的BasePHP Beta框架)部署完毕后发现伪静态功能未能启用,才发现原来nginx并不像apache那样可以直接支持pathinfo,因此百度了一下,找到了启用pathinfo的解决方案。
打开nginx.conf配置文件,找到类似如下代码的地方(不同版本的nginx可能稍有不同,但相差不远):
- location ~ \.php$
- {
- #原有代码
- }
将其改成:
- #去掉$是为了不匹配行末,即可以匹配.php/,以实现pathinfo
- location ~ \.php
- {
- #原有代码
- #定义变量 $path_info
- set $path_info "";
- #定义变量 $real_script_name,用于存放真实地址
- set $real_script_name $fastcgi_script_name;
- #如果地址与引号内的正则表达式匹配
- if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
- #将文件地址赋值给变量 $real_script_name
- set $real_script_name $1;
- #将文件地址后的参数赋值给变量 $path_info
- set $path_info $2;
- }
- #配置fastcgi的一些参数
- fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
- fastcgi_param SCRIPT_NAME $real_script_name;
- fastcgi_param PATH_INFO $path_info;
- }
这样,nginx服务器就可以支持pathinfo了。
2013年11月10日补充
nginx 0.7及以上已支持pathinfo,不需要模拟实现,但注意
- location ~ .*\.php$
应该改成:
- location ~ .*\.php(\/.*)*$
才能够匹配到含有pathinfo信息的路径。