如何利用.htaccess文件对PHP网站或文件进行伪静态处理

如何利用.htaccess文件对PHP网站或文件进行伪静态处理,第1张

利用htaccess文件对PHP网站进行伪静态处理要考虑两点:

一服务器支持伪静态,比如Apache要开启mod_rewrite模块支持

二利用htaccess完成伪静态需要根据不同的网站系统进行不同的设置,以下是一些常见系统的htaccess设定:

01wordpress:

# BEGIN WordPress

<IfModule mod_rewritec>

RewriteEngine On

RewriteBase /

RewriteRule ^indexphp$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule /indexphp [L]

</IfModule>

02Phpwind

RewriteEngine On

RewriteBase /

RewriteRule ^()-htm-()$ $1php$2

RewriteRule ^()simple/([a-z0-9\_]+\html)$ $1/simple/indexphp$2

03Discuz

RewriteEngine On

# Rewrite 系统规则请勿修改

RewriteRule ^archiver/((fid|tid)-[0-9]+\html)$ archiver/indexphp$1

RewriteRule ^forum-([0-9]+)-([0-9]+)\html$ forumdisplayphpfid=$1&page=$2

RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\html$ viewthreadphptid=$1&extra=page\%3D$3&page=$2

RewriteRule ^space-(username|uid)-(+)\html$ spacephp$1=$2

RewriteRule ^tag-(+)\html$ tagphpname=$1

04ecshop

RewriteEngine On

# direct one-word access

RewriteRule ^index\html$ index\php [L]

RewriteRule ^category$ index\php [L]

# access any object by its numeric identifier

RewriteRule ^feed-c([0-9]+)\xml$ feed\php\cat=$1 [L]

RewriteRule ^feed-b([0-9]+)\xml$ feed\php\brand=$1 [L]

RewriteRule ^feed\xml$ feed\php [L]

RewriteRule ^category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-])-([0-9]+)-(+)-([a-zA-Z]+)()\html$ category\php\id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5&page=$6&sort=$7&order=$8 [QSA,L]

RewriteRule ^category-([0-9]+)-b([0-9]+)-min([0-9]+)-max([0-9]+)-attr([^-])()\html$ category\php\id=$1&brand=$2&price_min=$3&price_max=$4&filter_attr=$5 [QSA,L]

RewriteRule ^category-([0-9]+)-b([0-9]+)-([0-9]+)-(+)-([a-zA-Z]+)()\html$ category\php\id=$1&brand=$2&page=$3&sort=$4&order=$5 [QSA,L]

RewriteRule ^category-([0-9]+)-b([0-9]+)-([0-9]+)()\html$ category\php\id=$1&brand=$2&page=$3 [QSA,L]

RewriteRule ^category-([0-9]+)-b([0-9]+)()\html$ category\php\id=$1&brand=$2 [QSA,L]

RewriteRule ^category-([0-9]+)()\html$ category\php\id=$1 [QSA,L]

RewriteRule ^goods-([0-9]+)()\html$ goods\php\id=$1 [QSA,L]

RewriteRule ^article_cat-([0-9]+)-([0-9]+)-(+)-([a-zA-Z]+)()\html$ article_cat\php\id=$1&page=$2&sort=$3&order=$4 [QSA,L]

RewriteRule ^article_cat-([0-9]+)-([0-9]+)()\html$ article_cat\php\id=$1&page=$2 [QSA,L]

RewriteRule ^article_cat-([0-9]+)()\html$ article_cat\php\id=$1 [QSA,L]

RewriteRule ^article-([0-9]+)()\html$ article\php\id=$1 [QSA,L]

RewriteRule ^brand-([0-9]+)-c([0-9]+)-([0-9]+)-(+)-([a-zA-Z]+)\html brand\php\id=$1&cat=$2&page=$3&sort=$4&order=$5 [QSA,L]

RewriteRule ^brand-([0-9]+)-c([0-9]+)-([0-9]+)()\html brand\php\id=$1&cat=$2&page=$3 [QSA,L]

RewriteRule ^brand-([0-9]+)-c([0-9]+)()\html brand\php\id=$1&cat=$2 [QSA,L]

RewriteRule ^brand-([0-9]+)()\html brand\php\id=$1 [QSA,L]

RewriteRule ^tag-()\html search\php\keywords=$1 [QSA,L]

RewriteRule ^snatch-([0-9]+)\html$ snatch\php\id=$1 [QSA,L]

RewriteRule ^group_buy-([0-9]+)\html$ group_buy\php\act=view&id=$1 [QSA,L]

RewriteRule ^auction-([0-9]+)\html$ auction\php\act=view&id=$1 [QSA,L]

05phpcms

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

你说的这个是可以实现的 多域名指向一个主域名 就是用301重定向

301重定向:

页面永久性移走(301重定向)是一种非常重要的“自动转向”技术。

  从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法。当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地址下原有的外部链接如数转移到新地址下,从而不会让网站的排名因为网址变更而收到丝毫影响。同样,在使用301永久性重定向命令让多个域名指向网站主域时,亦不会对网站的排名产生任何负面影响。

如何用htaccess重定向:

因为不是所有的虚拟主机都支持这种操作,所以也有以下的条件才会支持。

1、linux的虚拟主机Apache的服务器,需要支持htaccess 这个文件。(咨询主机商是否支持)如果支持,则先2个域名都解析到同一个IP,然后在htaccess文件开始处加入一下规则:

代码:

RewriteCond %{http_host} ^AAAcom [NC]

RewriteRule ^()$ http://wwwAAAcom/$1 [R=301L]

须注意的就是:htaccess这个文件基本在传到本地是不能直接被修改的,我们可以采用修改成htaccesstxt的形式来进行访问编 辑,把要写的代码写好之后,直接把htaccesstxt传上空间,再把htaccesstxt直接用FTP修改成htaccess文件名,这 样就可以升效啦!

2、window的虚拟主机IIS的服务器,需要有安装 ISAPI_Rewrite这个组件。(咨询主机商是否支持)如果支持,则先2个域名都解析到同一个IP,然后在httpdini文件开始处加入以下规则:

代码:

RewriteCond Host:^AAA\com$

RewriteRule () http\://www\AAA\com$1 [R,I]

如果采用以上代码不可行,请你尝试下这个代码:

代码:

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteCond Host: ^hongtaoseo\com$

RewriteRule () http\://www\hongtaoseo\com$1 [I,RP]

对于大部分虚拟主机是不支持这样的操作,那么这时候怎么办?

以上301重定向的操作方式并非是必须的,如果主机不支持,采用以下的方式也是同样可以达到效果。

1、如果是全新的域名和网站,也就是没带www的域名暂时没有被收录,那么可以采用没带www的域名转发到带www的域名上。在域名管理后台设置转发,国内的一些域名商也不允许转发了。

2、如果网站已经存在一段时间,没带www的域名也被收录了很多页面,则采用带www和不带www的域名同时解析到网站的IP。然后,网站的主导航,分类,或次导航等一些比较重要的位置,尽可能采用带www的绝对地址。

总结:因为人们的上网习惯 主要主域名也是带WWW的把不带WWW的和其他的多个域名可以转向到主域名之中。

在nginx下不支持htaccess的,这个文件会被直接隐藏。如果你在服务器里面可以尝试list -al 可以看到。

rewriteconf 创建这种文件来写规则吧。

需要服务器支持才可以设置伪静态。

网站设置成伪静态需要一些必备条件:

1、网站程序支持设置伪静态。

2、web服务器支持设置伪静态。

3、必须要有伪静态规则文件。

这里的WEB服务器不是指的硬件上的区别,而是软件上的,不同的WEB服务器的程序有不同的伪静态模块或者插件,介绍几款主流的WEB服务器以及相应的伪静态文件。

比如IIS60以前的伪静态插件叫ISAPI_rewrite,而且不同的插件版本对伪静态文件的支持也有所区别,ISAPI_rewrite3以前的版本只支持httpdini伪静态文件,从ISAPI_rewrite3开始支持htaccess伪静态文件。

从IIS70开始伪静态的设置可以使用URL Rewrite Module插件也可以不使用插件进行设置,如果使用URL Rewrite Module这个插件就可以直接支持htaccess的伪静态文件,如果不使用插件设置步骤比较复杂,所使用的伪静态文件就是webconfig。

恐怕还得你自己计算。

其中打开。htaccess文件是磁盘IO操作。这个跟磁盘读写速度有关,

然后正则匹配也是需要时间的。其余的时间可以忽略不计

可以这么计算下 假设你的访问量是X,X是指具体的访问的页面量。也就是你动态生成了多少次页面。

然后假设你的网站的平均深度为y,也就是说有几级目录。因为服务器每下一层目录都会查看该目录下有没有htaccess文件。如果有就调用,如果没有就不掉用。

如果你的目录平均深度为y,但是htaccess只在最高几层,或者中间几层,或者最低一层,都对访问有影响。然后假设用户平局访问到y层第t级目录中包含htaccess文件

也就是说用户访问下来共需要让服务器查询htaccess文件t次。然后t次然后正则匹配时间暂时设为常数c

磁盘查询时间w,磁盘度操作时间r

总时间=x (yw+tr);

一般来说w~=r y~=t

总时间=2xtr;

其中tr可以用c语言循环10000次读txt文件计算出来如果算出的时间是T

那么 总开销=xt/5000 秒

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何利用.htaccess文件对PHP网站或文件进行伪静态处理

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情