thinkphp路由+伪静态+ index.php

11 篇文章 0 订阅

之前一个网友说能不能达到这样的效果,www.olcms.com/news/id.html我当时说不能,后来想了想是可以的,今天试了试,已经实现,把步骤整理如下:

1.在tp的配置文件中开启伪静态和路由如下

<?php
return array(
//'配置项'=>'配置值'
//url访问模式为rewrite模式
'URL_MODEL'=>'2',
//开启伪静态
'URL_HTML_SUFFIX' =>'.html',
//开启路由
'URL_ROUTER_ON' =>true,
//路由规则
'URL_ROUTE_RULES'=>array(
'news/:id' => 'News/read',
),
);
?>
2.其实现在已经实现伪静态和路由了,当前访问 www.olcms.com/index.php/news/1.html 等于访问 www.olcms.com/index.php/News/read/1.html 当时我们还少一步,没有去掉index.php,现在说说apache怎么去index.php,
1)开启Apache rewrite moudle,然后重启apache
2)建立.htaccess文件(windows用另存为方式),内容如下
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php/$1 [L]

大功告成,现在就可以 www.test.com/news/1.html 等于访问 www.test.com/News/read/1.html 


因为在Fastcgi模式下,php不支持rewrite的目标网址的PATH_INFO的解析 
ThinkPHP运行在URL_MODEL=2时,会出现 No input file specified.的情况, 
这时可以修改网站目录的.htaccess文件: 
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 
改为 RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L] 
.htaccess的内容为: 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值