我要达到这么一种效果:当index.html存在的时候,就访问存在的index.html文件,不存在的时候,就通过伪静态去动态访问,配置如下:<VirtualHost *:80>RewriteEngine ONRewriteCond  %{HTTP_HOST} ^(.*)www.aaa.com$ [OR]
RewriteCond  %{HTTP_HOST} ^([^www]*).aaa.com$
RewriteCond  %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule  ^(.*)$        http://www.aaa.com.$1  [R,QSA,L]RewriteRule  ^/([a-zA-Z]+)\.html$ /run.php?controller=$1&action=$1&default=1 [L]    ServerAdmin [email protected]
    DocumentRoot "E:/www/home"
    ServerName www.aaa.com
    ErrorLog "D:/AppServ/log/index_error.log"
    CustomLog "D:/AppServ/log/index_access.log" common
    ErrorDocument 404 http://www.aaa.com/error_404.html
    ErrorDocument 403 http://www.aaa.com/error_403.html    <Directory "E:/www/home">
    Options Indexes FollowSymLinks
    DirectoryIndex index.html
    AllowOverride None
    Order deny,allow
    Allow from all
   </Directory>
</VirtualHost>但是上面的配置有问题,当index.html存在的时候,系统也通过伪静态去访问了,求助。
我确定我要做的效果是可以达到的,以前这样做过,后来配置弄丢了,怎么想也想不起来哪里写错了。
求助,谢谢。

解决方案 »

  1.   

    #如果目录存在就直接访问目录不进行RewriteRule
    RewriteCond %{REQUEST_FILENAME} !-d#如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写)
    RewriteCond %{REQUEST_FILENAME} !-f
      

  2.   

    对啊,RewriteCond  %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f   意思也一样吧
    而且我也照着你的试过了,也不行
    RewriteCond  %{REQUEST_FILENAME} !-d
    RewriteCond  %{REQUEST_FILENAME} !-f
      

  3.   

    继续求助:
    第八行:http://www.aaa.com.$1   最后的点.   如果去掉的话,网站就打不开了,按理说那个点是不需要的,是我误写上去的,刚刚发现了,就去掉,然后重启apache  ,发现网站打不开了,报302错误,想不通啊
      

  4.   

    呵呵   已经搞定   第五行www前面少了一个.