我要达到这么一种效果:当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} !-fRewriteRule ^(.*)$ http://www.aaa.com.$1 [R,QSA,L]RewriteRule ^/([a-zA-Z]+)\.html$ /run.php?controller=$1&action=$1&default=1 [L] ServerAdmin admin@yahoo.com.cn 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>
#如果目录存在就直接访问目录不进行RewriteRule
RewriteCond %{REQUEST_FILENAME} !-d
#如果文件存在,就直接访问文件,不进行下面的RewriteRule.(不是文件或文件不存在就执行重写)
RewriteCond %{REQUEST_FILENAME} !-f
对啊,RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 意思也一样吧
而且我也照着你的试过了,也不行
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
是不是第四行和第五行写错了呢
搞定啦 第七行和第八行换下位置就ok啦
学习了……
继续求助:
第八行:http://www.aaa.com.$1 最后的点. 如果去掉的话,网站就打不开了,按理说那个点是不需要的,是我误写上去的,刚刚发现了,就去掉,然后重启apache ,发现网站打不开了,报302错误,想不通啊
呵呵 已经搞定 第五行www前面少了一个.