`
mengdejun
  • 浏览: 410272 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

配置Nginx支持ThinkPHP的URL重写和PATHINFO

    博客分类:
  • Php
阅读更多

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错误。这个害我调了很久

 

分享到:
评论
3 楼 mengdejun 2011-11-22  
路径配置不正确。
2 楼 Jocson 2011-11-22  
一样啊。。。。
1 楼 wpeng1123 2011-04-10  
我的项目文件是test ThinkPHP放在test下面 我这样改动之后  访问登录页面,它跳转到index.php/Public/login  但是却发生系统错误

系统发生错误
您可以选择 [ 重试 ] [ 返回 ] 或者 [ 回到首页 ]
[ 错误信息 ]

无法加载模块Public

求解

相关推荐

    让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享

    本篇文章将详细解释如何在Nginx中配置以支持ThinkPHP的URL重写和PATHINFO。 首先,理解URL重写。URL重写是将用户请求的实际URL转换为服务器内部处理的另一种形式,这通常是为了隐藏实际的脚本路径,提高用户体验。...

    Ubuntu下Nginx配置ThinkPHP的Pathinfo和URl Rewrite模式

    通过以上知识点的总结,我们了解到在Ubuntu系统下配置Nginx以支持ThinkPHP框架的Pathinfo模式和URL Rewrite模式,需要对Nginx的配置文件进行详细的设置,特别是涉及PHP处理、路径信息解析和重写规则的部分。...

    浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法

    突然发现nginx不支持pathinfo功能,难怪在TP中调怎么都没管用。 2,开始上文件了,比网上其他一些杂的好多了: server { listen 80; #listen [::]:80; server_name www.tp.com tp.com; index index....

    在nginx中配置pathinfo模式支持thinkphp的URL重写

    最近一个项目中使用了ThinkPHP做为开发框架,URL上我们使用了PATHINFO模式,但是Nginx默认是不支持PATHINFO的,需要进行手动配置才可以,于是我们按照了以下方法进行了Nginx的PATHINFO支持配置:修改nginx.conf,...

    Nginx下支持Thinkphp URL Rewrite的配置示例

    然而,Nginx默认配置并不直接支持ThinkPHP的URL重写(PathInfo)模式,需要通过调整Nginx的配置文件来实现。 在Nginx中启用ThinkPHP的URL Rewrite功能,主要是通过`location`块中的`rewrite`指令来完成。下面是一个...

    Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持

    在Nginx服务器环境下,配置pathinfo和ThinkPHP的URL Rewrite模式是运行ThinkPHP框架的关键步骤。这使得URL更加简洁且符合SEO优化,同时也能够更好地处理动态请求。下面将详细介绍如何进行这些配置。 首先,我们需要...

    Nginx配置支持ThinkPHP的PATH_INFO

    因此,当在Nginx上部署ThinkPHP项目时,必须添加适当的配置来正确处理PATH_INFO,以确保框架能够正确解析和使用URL路径信息。 3. Ubuntu环境下的Nginx配置: 在Ubuntu系统下配置Nginx通常涉及编辑/etc/nginx/sites-...

    Thinkphp---URL重写组件

    本文将深入探讨ThinkPHP中的URL重写组件,以及如何在64位和32位系统中配置和使用这个组件。 URL重写是Web开发中的一种优化技术,用于隐藏实际的URL结构,使网址看起来更简洁、更友好。在ThinkPHP框架中,URL重写...

    nginx+thinkphp下解决不支持pathinfo模式

    本文将详细介绍如何在Nginx和ThinkPHP环境中解决不支持PATHINFO模式的问题。 首先,PATHINFO模式是一种URL路由方式,它允许通过URL的末尾部分传递额外的参数给PHP脚本,通常用于RESTful API或框架中的路由处理。...

    ThinkPHP的URL重写问题

    总的来说,ThinkPHP的URL重写涉及到服务器配置、`.htaccess`文件和框架自身的配置。正确设置这些部分,才能实现期望的URL形式。在遇到问题时,可以参考其他相关文章,例如ThinkPHP与Dwz的整合、JS中`U`方法的解析...

    nginx中配置pathinfo模式示例

    在Nginx服务器环境中,配置PathInfo模式是为了支持如PHP框架(例如ThinkPHP)中URL路由的特殊形式,其中URL中的参数部分会跟在.php文件名后面。PathInfo模式允许服务器将这部分信息传递给后端的FastCGI进程,以便...

    thinkphp在低版本Nginx 下支持PATHINFO的方法分享

    如果你遇到问题,可以参考其他文章来解决问题,如“解决nginx不支持thinkphp中pathinfo的问题”、“Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持”等,这些文章提供了更深入的解决方案和示例。 总之,通过...

    nginx下配置thinkphp文件的方法

    配置Nginx以支持ThinkPHP框架需要理解URL重写、PathInfo处理和PHP请求转发。通过上述配置,你可以确保ThinkPHP项目在Nginx服务器上正常运行。同时,根据实际需求,可能还需要考虑其他配置,比如HTTPS支持、静态资源...

    Nginx隐藏index.php和Pathinfo模式配置例子

    Pathinfo模式是一种PHP处理URL参数的方式,常见于一些框架如ThinkPHP、Yii等。在这种模式下,URL中的参数部分被放置在.php文件之后,如`example.com/index.php/controller/action`。 配置Pathinfo模式的关键在于...

    Nginx下实现pathinfo及ThinkPHP的URL模式

    在Nginx服务器环境下,实现...总之,Nginx中实现PathInfo和ThinkPHP的URL_MODE=2模式的关键在于配置FastCGI参数以及添加适当的重写规则。正确配置后,不仅可以提高URL的可读性,还能使ThinkPHP框架更好地处理Web请求。

    Nginx配置PATHINFO隐藏thinkphp index.php

    这样,当用户访问类似`http://example.com/controller/action`的URL时,Nginx会自动将请求转发到`index.php`,并将`controller/action`作为PATHINFO传递给ThinkPHP框架,从而实现隐藏`index.php`的效果。同时,这种...

Global site tag (gtag.js) - Google Analytics