PHP+Apache配置伪静态的问题。

目前网站是动态php的访问象a.php,b.php?id=1这样。
想给它搞成伪静态的,让用户通过诸如a.html,b-1.html这样访问(注意:而不能通过原来的a.php,b.php?id=1访问,或者也可以说是不让用户知道这两个动态地址)。
我这是apache2+的版本,在apache的httpd.conf里面设置了一下:
LoadModule rewrite_module modules/mod_rewrite.so
<Directory "c:/www/sing">
rewriteengine on
rewritebase /
RewriteRule ^a.html$ a.php
RewriteRule ^b-(.*).html$ b.php?id=$1

</Directory>
就上面这最最简单的例子。把html直接解析成php。
现在的问题是:默认访问网站,还是以原来的.php动态形式展现出来。但是把后缀改成html也能访问。(即:a.php和a.html均能访问。但默认还是a.php。没有成为a.html)。
我想了解一是不是我哪里写错了?或是除了我在apache中配置外,还必须在原来的前台文件中把相应的动态网址也改成静态的?如果<a href="a.php"> 要改成<a href="a.html">?以此来达到“隐藏a.php"的目的???

在网站的根目录创建一个.htaccess这样的文件

然后你写上伪静态的UEL规则

RewriteEngine On

RewriteRule ^(.*)content-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/index\.php\?m=content&c=index&a=show&catid=$2&id=$3&page=$4

RewriteRule ^(.*)show-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/index\.php\?m=content&c=index&a=show&catid=$2&id=$3&page=$4

RewriteRule ^(.*)list-([0-9]+)-([0-9]+).html$ $1/index\.php\?m=content&c=index&a=lists&catid=$2&page=$3 



这样就配置完成了

PS:伪静态的URL规则可以在网上找的

追问

谢谢解答。但是还没回答到我的核心问题。

只需要规则就可以让.php原文件访问不了?(或是让用户看不见这个动态的php文件?)
我主要是想确定一下是不是前台源码也得改:
象我目前的一些代码中如果,这样是否必须改成?以此来达到“隐藏a.php"的目的???
关键是上面这句话。

追答

是的

这其实就是全网站URL重新生成,所以你说的那个是已经实现了的

追问

那就是apache配置完规则后。前台所有文件中涉及的动态链接地址也必须都改成相应的静态地址喽?

追答

是的,配置原APACHE之后你在你的网站的根目录配置URL规则

规则是根据你的动态地址怎么显示怎么配置的,这个在网上可以自动生成

我是这样写的希望可以给你一点参考

追问

谢谢你的回复,但是你似乎还是没有明白我的意思。
我在apache里面直接配置了规则了,象你上面这样的。
我的意思是配置完规则后。原来的前台文件中有涉及的动态链接地址也必须都改成相应的静态地址?
象代码中是不是要改成???

追答

不用

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-23
php+apache服务设置伪静态其实是最简单的一种,根据服务器所属的类型写进去相应的规则就可以了,无论如何,基础优化部分,伪静态是必须要设置好的。
第2个回答  2013-03-29
你没有错,重写就像是个障眼法 所有呢 ,你重写的其实最终访问的还是以前的动态页面 动态页面也是一如既往的可以访问 就想discuz论坛,有的网站用了重写,如果你用的没重写的动态页面去访问,也是一样的,别纠结这个问题

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网