日期:2014-05-17  浏览次数:20388 次

thinkphp的伪静态问题
高手些,请教一个问题:thinkphp中伪静态,设置后,怎么没有自己改变url地址,比如访问127.0.0.1/Index/index/id/12它没有变成127.0.0.1/Index/index/12.html  说师要开启url重写,我开启后还是没有效果(除了可以不加index.php),是不是要写伪静态规则? 这个伪静态规则咋个写?是不是在.htaccess文件中写?

------解决方案--------------------
这个应该是通过appach 或nginx来配吧,
------解决方案--------------------
一、如果你用pathinfo的话,127.0.0.1/Index/index/id/12应该是访问Index模块的index方法,传入参数id,值为12。

然后如果你使用了$this->display();  // 很久没用有点忘了。。。

它会调用Tpl/Index/index.html模板进行解析输出(你可以往模板里assign变量)

-------------------

二、而你所说的伪静态是在配置文件中设置了'URL_HTML_SUFFIX'=>'html'吗?

那127.0.0.1/Index/index/id/12 和 127.0.0.1/Index/index/12.html 的调用过程跟上面所说的是一样的。只不过后者更具有静态页面的URL特征。

--------------------

我不是很清楚你是否只是想实现第二点所说的那种伪静态,还是想访问“12.html”这个文件。

若是后者,把你“12.html”的文件重命名为index.html放到Tpl/Index/目录下即可。
------解决方案--------------------
可以通过设置URL_HTML_SUFFIX参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行。
伪静态设置后,如果需要动态生成一致的URL,可以使用U方法在模板文件里面生成URL。

U('Blog/read?id=1')这个定义为例。
当前URL设置为REWRITE模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是: 
http://serverName/Blog/read/id/1.html

------解决方案--------------------
URL_HTML_SUFFIX'=>'html'