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

解决方案 »

  1.   

    这个应该是通过appach 或nginx来配吧,
      

  2.   

    一、如果你用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/目录下即可。
      

  3.   

    我在本地环境中,开启了apache的module_rewirte模块,然后在项目根目录下也建了.htaccess文件,也配置了'URL_HTML_SUFFIX'=>'html',也启用了路由和静态缓存,其实路由和静态缓存倒是其次,我想用的效果就是:访问127.0.0.1/Index/index/id/12的时候服务器会自动将其转换成127.0.0.1/Index/index/12.html
       这种效果感觉就是访问的静态页面,我试过了,如果在访问的url地址后面加上一个.html的后缀,跳转过去的时候后面也会加上一个.html的后缀,比如:127.0.0.1/Index/index/id/12.html这样的一个地址,我访问的话,他在后面会加上.html 但是这不是我想象中的那样,我想的是访问127.0.0.1/Index/index/id/12的时候服务器会自动将其转换成127.0.0.1/Index/index/12.html 
      

  4.   

    可以通过设置URL_HTML_SUFFIX参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行。
    伪静态设置后,如果需要动态生成一致的URL,可以使用U方法在模板文件里面生成URL。U('Blog/read?id=1')这个定义为例。
    当前URL设置为REWRITE模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是: 
    http://serverName/Blog/read/id/1.html
      

  5.   

    使用URL_HTML_SUFFIX来添加.html的后缀我晓得,我看到手册上有讲U方法,但是我用不来,静态规则 也不会写, 谁帮忙写一个例子?谢谢了