ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 'URL_MODEL' => 2 即可。在Apache下只需要开启mod_rewrite模块就可以正常访问了,但是Nginx中默认是不支持PATHINFO的,所以我们需要修改nginx.conf文件。
网上搜了很多方法都不奏效,研究了一天,发现通过以下的配置可以完美支持 'URL_MODEL' => 2 的情况了01 location /project/ {
index index.php;
if (!-e $request_filename) {
rewrite ^/project/(.*)$ /project/index.php/$1 last;
break;
}
}
location ~ .+\.php($|/) {
set $script $uri;
set $path_info "/";
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php?IF_REWRITE=1;
include /APMServ/nginx/conf/fastcgi_params;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root/$script;
fastcgi_param SCRIPT_NAME $script;
}
这里先把project下的请求都转发到index.php来处理,亦即ThinkPHP的单一入口文件;然后把对php文件的请求交给fastcgi来处理,并且添加对PATH_INFO的支持。
重启Nginx以后,http://localhost/project/Index/insert, http://localhost/project/index.php/Index/delete 这样的URL都可以正确访问了。
还有一个地方需要注意的是,Nginx配置文件里 if 和后面的括号之间要有一个空格,不然会报unknown directive错误。这个害我调了很久
分享到:
相关推荐
本篇文章将详细解释如何在Nginx中配置以支持ThinkPHP的URL重写和PATHINFO。 首先,理解URL重写。URL重写是将用户请求的实际URL转换为服务器内部处理的另一种形式,这通常是为了隐藏实际的脚本路径,提高用户体验。...
通过以上知识点的总结,我们了解到在Ubuntu系统下配置Nginx以支持ThinkPHP框架的Pathinfo模式和URL Rewrite模式,需要对Nginx的配置文件进行详细的设置,特别是涉及PHP处理、路径信息解析和重写规则的部分。...
突然发现nginx不支持pathinfo功能,难怪在TP中调怎么都没管用。 2,开始上文件了,比网上其他一些杂的好多了: server { listen 80; #listen [::]:80; server_name www.tp.com tp.com; index index....
最近一个项目中使用了ThinkPHP做为开发框架,URL上我们使用了PATHINFO模式,但是Nginx默认是不支持PATHINFO的,需要进行手动配置才可以,于是我们按照了以下方法进行了Nginx的PATHINFO支持配置:修改nginx.conf,...
然而,Nginx默认配置并不直接支持ThinkPHP的URL重写(PathInfo)模式,需要通过调整Nginx的配置文件来实现。 在Nginx中启用ThinkPHP的URL Rewrite功能,主要是通过`location`块中的`rewrite`指令来完成。下面是一个...
在Nginx服务器环境下,配置pathinfo和ThinkPHP的URL Rewrite模式是运行ThinkPHP框架的关键步骤。这使得URL更加简洁且符合SEO优化,同时也能够更好地处理动态请求。下面将详细介绍如何进行这些配置。 首先,我们需要...
因此,当在Nginx上部署ThinkPHP项目时,必须添加适当的配置来正确处理PATH_INFO,以确保框架能够正确解析和使用URL路径信息。 3. Ubuntu环境下的Nginx配置: 在Ubuntu系统下配置Nginx通常涉及编辑/etc/nginx/sites-...
本文将深入探讨ThinkPHP中的URL重写组件,以及如何在64位和32位系统中配置和使用这个组件。 URL重写是Web开发中的一种优化技术,用于隐藏实际的URL结构,使网址看起来更简洁、更友好。在ThinkPHP框架中,URL重写...
本文将详细介绍如何在Nginx和ThinkPHP环境中解决不支持PATHINFO模式的问题。 首先,PATHINFO模式是一种URL路由方式,它允许通过URL的末尾部分传递额外的参数给PHP脚本,通常用于RESTful API或框架中的路由处理。...
总的来说,ThinkPHP的URL重写涉及到服务器配置、`.htaccess`文件和框架自身的配置。正确设置这些部分,才能实现期望的URL形式。在遇到问题时,可以参考其他相关文章,例如ThinkPHP与Dwz的整合、JS中`U`方法的解析...
在Nginx服务器环境中,配置PathInfo模式是为了支持如PHP框架(例如ThinkPHP)中URL路由的特殊形式,其中URL中的参数部分会跟在.php文件名后面。PathInfo模式允许服务器将这部分信息传递给后端的FastCGI进程,以便...
如果你遇到问题,可以参考其他文章来解决问题,如“解决nginx不支持thinkphp中pathinfo的问题”、“Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持”等,这些文章提供了更深入的解决方案和示例。 总之,通过...
配置Nginx以支持ThinkPHP框架需要理解URL重写、PathInfo处理和PHP请求转发。通过上述配置,你可以确保ThinkPHP项目在Nginx服务器上正常运行。同时,根据实际需求,可能还需要考虑其他配置,比如HTTPS支持、静态资源...
Pathinfo模式是一种PHP处理URL参数的方式,常见于一些框架如ThinkPHP、Yii等。在这种模式下,URL中的参数部分被放置在.php文件之后,如`example.com/index.php/controller/action`。 配置Pathinfo模式的关键在于...
在Nginx服务器环境下,实现...总之,Nginx中实现PathInfo和ThinkPHP的URL_MODE=2模式的关键在于配置FastCGI参数以及添加适当的重写规则。正确配置后,不仅可以提高URL的可读性,还能使ThinkPHP框架更好地处理Web请求。
这样,当用户访问类似`http://example.com/controller/action`的URL时,Nginx会自动将请求转发到`index.php`,并将`controller/action`作为PATHINFO传递给ThinkPHP框架,从而实现隐藏`index.php`的效果。同时,这种...