怎么配置 apache的 mod_rewrite 并支持 .htacces功能

PHP程序设计语言和相关项目讨论
User avatar
mbsky
新手入门
新手入门
Posts: 39
Joined: 2007-05-10 16:54

怎么配置 apache的 mod_rewrite 并支持 .htacces功能

Post by mbsky » 2007-05-19 9:47

怎么配置 apache的 mod_rewrite 并支持 .htacces功能
谁能具体的教我怎么配置下,不胜感谢ing......

User avatar
IOsetting
论坛管理员
论坛管理员
Posts: 3645
Joined: 2006-10-17 1:48

Re: 怎么配置 apache的 mod_rewrite 并支持 .htacces功能

Post by IOsetting » 2007-05-19 14:09

httpd.conf:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

还要 注意打开 AllowOverride

User avatar
fanisky
技术组成员
技术组成员
Posts: 510
Joined: 2007-04-15 15:03

Re: 怎么配置 apache的 mod_rewrite 并支持 .htacces功能

Post by fanisky » 2007-05-19 16:09

linxu下的话,就要重新编译一下了

User avatar
mbsky
新手入门
新手入门
Posts: 39
Joined: 2007-05-10 16:54

Re: 怎么配置 apache的 mod_rewrite 并支持 .htacces功能

Post by mbsky » 2007-05-19 17:33

IOsetting wrote:httpd.conf:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

还要 注意打开 AllowOverride
    就是直接在AppServ\Apache2.2\conf\httpd.conf这个文件加上
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
这句就可以了是吗 ?    直接加在文件末应该可以吧?
还有AllowOverride 这个是什么呢?

User avatar
mbsky
新手入门
新手入门
Posts: 39
Joined: 2007-05-10 16:54

Re: 怎么配置 apache的 mod_rewrite 并支持 .htacces功能

Post by mbsky » 2007-05-19 23:14

载入rewrite模块
LoadModule rewrite_module modules/mod_rewrite.so
启动rewirite
RewriteEngine on
支持.htaccess
AllowOverride All
有的说是这样的,是不是要在httpd.conf 里加LoadModule rewrite_module modules/mod_rewrite.so
和RewriteEngine on 这两句?    不过你们说的AllowOverride All 这个是什么意思呢?


User avatar
mbsky
新手入门
新手入门
Posts: 39
Joined: 2007-05-10 16:54

Re: 怎么配置 apache的 mod_rewrite 并支持 .htacces功能

Post by mbsky » 2007-05-21 8:51

那我是不是应该要在AppServ\Apache2.2\conf\httpd.conf文件里加上
<Directory/>
AllowOverride All FileInfo
</Directory>
??
一个一种说话,谁能告诉比较准备的详细的说明配置呢?

User avatar
IOsetting
论坛管理员
论坛管理员
Posts: 3645
Joined: 2006-10-17 1:48

Post by IOsetting » 2007-05-21 9:36

你可以参考一下apache的conf目录下的httpd.default.conf, 这是一个很标准的默认配置范本, 你在里面查找AllowOverride就能看出这个关键字的用法.

首先在第一个<Directory>标签中, 定义了全局的默认设置
<Directory />
     Options FollowSymLinks
     AllowOverride None
</Directory>
这里设置AllowOverride是关闭的, 你可以用all打开, 但是建议不这么做, 而是在后面对不同的目录采用不同的配置

在后面有指向apache网页根目录的一个<Directory>, 例如
<Directory "C:/***/Apache2/wwwroot">
Options Indexes FollowSymLinks
***

AllowOverride None
Order allow,deny
Allow from all
</Directory>
在这里打开AllowOverride, 就可以使整个根目录下的目录都支持.htaccess 形式的配置文件
而后再用这种方式可以分别设置其下的目录是否关闭这个功能

User avatar
mbsky
新手入门
新手入门
Posts: 39
Joined: 2007-05-10 16:54

Post by mbsky » 2007-05-21 9:46

那就是在AppServ\Apache2.2\conf\httpd.conf加入两段的<Directory>标签?
<Directory />
     Options FollowSymLinks
     AllowOverride None
</Directory>

在后面有指向apache网页根目录的一个<Directory>, 例如
<Directory "C:/***/Apache2/www">     //这边是指到www就是在这个文件目录下的.htaccess都支持?
Options Indexes FollowSymLinks
***

AllowOverride None
Order allow,deny
Allow from all
</Directory>

User avatar
IOsetting
论坛管理员
论坛管理员
Posts: 3645
Joined: 2006-10-17 1:48

Post by IOsetting » 2007-05-21 10:18

我既不能说是, 也不能说不是, 请根据自己的httpd.conf修改, 里面有很详细的提示, 网上也很多详细的apache配置教程, 并不是简单的一两句话能说明的.
在你没有一定的知识基础前, 和你讲解这些是没有意义的, 就如前面大家已经给出的方法一样, 如果对apache的配置有稍微的了解, 相信以上的内容已经足够解决问题.

User avatar
mbsky
新手入门
新手入门
Posts: 39
Joined: 2007-05-10 16:54

Post by mbsky » 2007-05-21 10:23

    好的,我多多看看资料吧,谢谢说明了。。。

User avatar
mbsky
新手入门
新手入门
Posts: 39
Joined: 2007-05-10 16:54

Post by mbsky » 2007-05-21 16:51

<Directory "d:/AppServ/www/Admin">
     Options Indexes FollowSymLinks MultiViews ExecCGI

     AllowOverride All

     Order allow,deny
     Allow from all

</Directory>
看了点资料,可是这样配置感觉是对的 可是实验了多次 转另页面的时候 都是出现“无法显示页面”
这个是什么原因呢。。。。

mod_rewrite    应该就是把    #LoadModule rewrite_module modules/mod_rewrite.so #的去掉它就支持了 是吧

User avatar
IOsetting
论坛管理员
论坛管理员
Posts: 3645
Joined: 2006-10-17 1:48

Post by IOsetting » 2007-05-21 20:49

<Directory "d:/AppServ/www/Admin">
     Options Indexes FollowSymLinks MultiViews ExecCGI

     AllowOverride All

     Order allow,deny
     Allow from all

</Directory>
你的网站根目录在d:/AppServ/www/Admin ? 我觉得应该是 d:/AppServ/www 吧?
mod_rewrite     应该就是把     #LoadModule rewrite_module modules/mod_rewrite.so #的去掉它就支持了 是吧
嗯, 没错是这样

在增加 .htaccess 后, 如果 .htaccess 里面没有配置好确实很容易导致转向错误

User avatar
mbsky
新手入门
新手入门
Posts: 39
Joined: 2007-05-10 16:54

Post by mbsky » 2007-05-21 22:49

在AppServ\Apache2.2\conf\httpd.conf好象已经配置好了,今天实验了很多次,就是不行 ,非常奇怪。。。

Code: Select all

<Directory />
      Options FollowSymLinks ExecCGI Indexes
      AllowOverride None
      Order deny,allow
      Deny from all
      Satisfy all
</Directory>

#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "d:/AppServ/www">
      #
      # Possible values for the Options directive are "None", "All",
      # or any combination of:
      #     Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
      #
      # Note that "MultiViews" must be named *explicitly* --- "Options All"
      # doesn't give it to you.
      #
      # The Options directive is both complicated and important.  Please see
      # http://httpd.apache.org/docs/2.2/mod/core.html#options
      # for more information.
      #
      Options Indexes FollowSymLinks MultiViews ExecCGI

      #
      # AllowOverride controls what directives may be placed in .htaccess files.
      # It can be "All", "None", or any combination of the keywords:
      #     Options FileInfo AuthConfig Limit
      #
      AllowOverride All

      #
      # Controls who can get stuff from this server.
      #
      Order allow,deny
      Allow from all

</Directory>

User avatar
IOsetting
论坛管理员
论坛管理员
Posts: 3645
Joined: 2006-10-17 1:48

Re: 怎么配置 apache的 mod_rewrite 并支持 .htacces功能

Post by IOsetting » 2007-05-21 23:18

每次修改httpd.conf之后, 重启apache了吗?
照你贴出来的配置, 应该就是支持AllowOverride的了

Post Reply