目前网站是动态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里面直接配置了规则了,象你上面这样的。
我的意思是配置完规则后。原来的前台文件中有涉及的动态链接地址也必须都改成相应的静态地址?
象代码中是不是要改成???
不用