ThinkPHP3.2.3+Nginx的伪静态配置

用TP框架开发的公司项目,URL模式是REWRITE模式('URL_MODEL' => 2,),上传至服务器,发现URL重写这块出现了问题,于是研究了一下,找到了答案,写下备忘:

server
	{
		listen 80;	
		server_name www.vc.cn;
		
		index index.php;
		root  /data/wwwroot/vc;

		#error_page   404   /404.html;
		location /
		    {
		        index index.php;
		        #ThinkPHP REWRITE支持
			    if (!-e  $request_filename) {
				    rewrite ^/(.*)$ /index.php?s=$1 last;
			    }

                #301 跳转设置
                if ($host = 'vc.cn') {
                        rewrite ^/(.*) http://www.vc.cn/$1 permanent;
                }
			
        	}		

		location ~ [^/]\.php(/|$)
			{
				# comment try_files $uri =404; to enable pathinfo
				try_files $uri =404;
				fastcgi_pass  unix:/tmp/php-cgi.sock;
				fastcgi_index index.php;
				include fastcgi.conf;
				#include pathinfo.conf;
			}

		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
			{
				expires      30d;
			}

		location ~ .*\.(js|css)?$
			{
				expires      12h;
			}

		access_log  /home/wwwlogs/vc.log  access;
	}


如以上代码注释【#ThinkPHP REWRITE支持】。

如果ThinkPHP项目安装在二级目录,Nginx的伪静态方法设置如下,其中subdir是所在的目录名称

location /subdir/ {
        if (!-e $request_filename){
            rewrite  ^/subdir/(.*)$  /subdir/index.php?s=$1  last;
        }
    }




### ThinkPHP6 在 Nginx 下的伪静态配置 对于ThinkPHP6,在Nginx环境下实现伪静态主要依赖于URL重写规则。这使得动态页面可以被伪装成静态文件的形式访问,从而提高SEO效果以及用户体验。 #### 配置Nginx支持ThinkPHP6伪静态 为了使Nginx能够正确解析ThinkPHP框架中的请求路径,需编辑站点对应的Nginx配置文件,通常位于`/etc/nginx/sites-available/default`或其他自定义位置。以下是适用于大多数情况的标准配置: ```nginx server { listen 80; server_name yourdomain.com; root /path/to/thinkphp/public; # 设置项目public目录作为Web根目录 location / { try_files $uri $uri/ @rewrite; } location @rewrite { rewrite ^/(.*)$ /index.php/$1 last; } location ~ \.php(/|$) { fastcgi_pass unix:/var/run/php/php7.x-fpm.sock; # 根据实际环境调整版本号 include snippets/fastcgi-php.conf; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` 上述配置确保了所有未匹配具体资源的请求都会交给`index.php`处理,并保留原始URI以便框架内部路由机制正常工作[^1]。 #### 测试与验证 完成以上修改后保存更改并重新加载Nginx服务以应用新的配置设置。可以通过命令行执行如下操作来平滑重启Nginx而不中断现有连接: ```bash sudo systemctl reload nginx # 或者使用 sudo service nginx reload ``` 接着尝试访问应用程序的不同部分,确认链接是否按预期显示而不会暴露底层的技术细节或参数[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值