.htaccess 文件不起作用?| (Apache Rewrite)

打开了 Apache 的 Rewrite 模块,想对一个本地的 Apache 虚拟主机进行一下 URL 重写,测试一下功能:

虚拟主机的配置子文件被包含在了主 Apache 配置文件里:

主配置文件(D:\usr\local\apache2\conf\httpd.conf):

# 包含 phpweb20 虚拟主机配置文件 
Include D:/usr/webroot/Zendphpweb20/httpd.conf

子配置文件(D:\usr\webroot\Zendphpweb20\httpd.conf):

#phpweb20 虚拟主机设置
<VirtualHost 127.0.0.2:80>
    ServerName phpweb20
    DocumentRoot D:/usr/webroot/Zendphpweb20/htdocs

    <Directory D:/usr/webroot/Zendphpweb20/htdocs>
        AllowOverride All
        Options All
    </Directory>
	
    <IfModule rewrite_module>
	RewriteEngine On
	RewriteCond %{SCRIPT_FILENAME} !-f
	RewriteCond %{SCRIPT_FILENAME} !-d
	RewriteRule ^/(.*)$ /index.php
    </IfModule>
	
    #修改 PHP 配置(可选)
    php_value include_path .;D:/usr/webroot/Zendphpweb20/include;D:/usr/local/php5/PEAR
    php_value magic_quotes_gpc off
    php_value register_globals off
</VirtualHost>

中间的 <IfModule> 块即为重写定义区域:

RewriteEngine On

开启 Apache Rewrite 模块;

RewriteCond %{SCRIPT_FILENAME} !-f

如果所请求的文件未对应到相对于 Web 根目录的某个文件,则使用重写规则;

RewriteCond %{SCRIPT_FILENAME} !-d

如果请求不存在的目录,则使用重写规则;

RewriteRule ^/(.*)$ /index.php

如果满足上述的两个条件之一,则执行此条重写规则;

---------------------------------------------------------------------以上似乎没有问题

可是当我删除 httpd.conf 中的 <IfModule> 块,把重写规则写入 .htaccess 文件里,并放在根目录下时,Apache 好像并没有理会 .htaccess 文件,重写失败!!不知道是为什么!是不是两个位置的重写规则有些差异还不知道呢?

望高人指导…Waiting..

posted @ 2010-10-31 15:39  无墨来点睛  Views(15216)  Comments(3Edit  收藏  举报