Nginx兼容框架的pathinfo模式与URL重写
几乎所有的框架(ThinkPHP,Zend Framework,CI,Yii,laravel等)都会使用URL重写或者pathinfo模式,使URL看起来更美观,比如可以隐藏掉入口文件,并且有利于搜索引擎优化,其实让Nginx支持pathinfo或者重写也不难,首先在php.ini中设置cgi.fix_pathinfo=1
再就是添加配置文件(新版nginx) 内容如下:
#pathinfo 支持开始 以上配置信息根据实际情况配置
fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED documentrootdocument_rootdocumentrootfastcgi_path_info;
#pathinfo 支持结束
可能很多童鞋看到以上配置仍然不知道在哪添加这几行配置,下面看一个完成的配置
server
{
listen 80 ;
server_name _;
index index.html index.htm index.php;
root /home/wwwroot/default;
#匹配php脚本扩展名
location ~ [^/].php(/|$)
{
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
#fastcgi相关参数开始 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REQUEST_SCHEME $scheme; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param REDIRECT_STATUS 200; fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; #fastcgi相关参数结束 #pathinfo开始 fastcgi_split_path_info ^(.+?\.php)(/.*)$; set $path_info $fastcgi_path_info; fastcgi_param PATH_INFO $path_info; try_files $fastcgi_script_name =404; #pathinfo结束 } #重写模式开始 location / { if (!-e $request_filename){ #rewrite ^(.*)$ /index.php?s=/$1 last; rewrite ^(.*)$ /index.php/$1 last; } } #重写模式结束 }
这样Nginx就支持pathinfo了,当然您需要根据您的服务器进行具体的配置,可能会略有变化,切忌机械的照搬照抄。
对于URL重写也比较简单,上面的配置中也已经提到 例如对于THINKPHP可以这样设置
location / {
if (!-e KaTeX parse error: Expected '}', got '#' at position 51: … #̲rewrite ^(.*) /index.php?s=/1last;rewrite(.∗)1 last;
rewrite ^(.*)1last;rewrite(.∗) /index.php/$1 last;
}
}
- Nginx兼容框架的pathinfo模式与URL…
- nginx、TP框架实现兼容pathinfo和rewrite两种url访问方式
- nginx、TP框架实现兼容pathinfo和rewrite两种url访问方式
- nginx、TP框架实现兼容pathinfo和rewrite两种url访问方式
- Nginx兼容框架的pathinfo模式与URL重写
- 在nginx中配置pathinfo模式支持thinkphp的URL重写
- 微软URLRewriter.dll的url重写在目标框架.Net Framework2.0、4.0和应用程序池经典模式、集成模式下的配置
- codeigniter 在 nginx 下的 pathinfo url 重写配置
- 【Nginx重写】下支持ThinkPHP的Pathinfo和URl Rewrite模式
- IIS7下使用4.0框架集成模式URLRewriter重写中文URL乱码问题
- 如何在安装的lnmp一键环境包(nginx)启用pathinfo URL模式
- 如何在nginx环境中启用php的pathinfo URL模式[修正]
- ThinkPHP中pathinfo模式与URL重写
- Nginx下使Thinkphp URL模式支持PATHINFO和REWRITE
- nginx配置支持pathinfo模式的url访问(原创)
- Nginx下使Thinkphp URL模式支持PATHINFO和REWRITE
- 浅析ThinkPHP中的pathinfo模式和URL重写
- nginx---支持php 框架 pathinfo 模式
- ThinkPHP中pathinfo的两种模式、四种路径访问模式和URL重写
- 详解ThinkPHP支持的URL模式有四种普通模式、PATHINFO、REWRITE和兼容模式