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

文章标签: .htaccess
2014-11-3 22:27:18     21 人阅读    

打开了 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 文件,重写失败!!不知道是为什么!是不是两个位置的重写规则有些差异还不知道呢?


原文地址:http://www.itmmd.com/201411/117.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

javascript教程 - 基本类型值和引用类型值详解   上一篇
下一篇  PHP开发框架-PHP 的 一些 MVC 框架简介

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!