您现在的位置: 首页linux+vps>正文
url伪静态下静态文件同时存在,优先访问真实静态文件的办法
2011年02月12日 linux+vps 暂无评论

伪静态是个好东西,可以让我们的url更加“人性化”,比如我的博客,url全是“英文+html”形式,看上去比php动态文件好看而且富有意义多了。

可是作为一个大型网站,如果整站全用伪静态的话,访问量一上去,服务器就会无比吃力。有钱买硬件做负载还好,没钱的站长朋友该怎么解决呢?聪明的你肯定想到办法了,对:伪静态+静态。

也许你会问,为什么要同时使用呢?为何不直接全静态呢?有的时候,我们程序本身不支持生成静态,或者我们不想让网站目录下出现太多文件,方便管理等等原因,我们需要用到伪静态,下面讲讲实现的办法吧!

以下办法经过测试,可以放心使用:

#   如果真实文件存在则优先访问,而不是伪静态到php文件
RewriteEngine on
RewriteBase   /
RewriteRule   ^(.*)\.html$              $1      [C,E=WasHTML:yes]
#   跳转到真实的静态文件
RewriteCond   %{REQUEST_FILENAME}.phtml -f
RewriteRule   ^(.*)$ $1.html                   [S=1]
#   如果不存在真实文件则伪静态
RewriteCond   %{ENV:WasHTML}            ^yes$
RewriteRule   ^(.*)$ $1.html

网上给出的通用办法如下:

<IfModule mod_rewrite.c>
RewriteEngine On  
RewriteRule ^(.*)\.html$ $1 [C,E=WasHTML:yes]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [S=1]
#如果存在xx.html,直接读取

RewriteCond %{ENV:WasHTML} ^yes$
RewriteRule ^(.*)$ $1.php
#如果不存在xx.html直接转向至xx.php
</IfModule>

给我留言