您的位置:首页 > 运维架构 > Apache

.htaccess 配置以及相关问题的解释

2016-10-19 10:36 267 查看
百度百科的解释:

.htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,

以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

要使的.htaccess生效需要配置apache服务器

关于apache的配置安装就不累述了,可以查看博主的Windows下面安装apache+php+mysql开发环境

1、打开apache\Apache24\conf
2、找到#LoadModule rewrite_module modules/mod_rewrite.so
3、去掉前面的注释


需要注意的是:千万不要和PHP扩展的配置搞混了。

4、查找Directory,你会发现一共有三个可以配置的地方


仔细观察他们的区别

<Directory />
<Directory "c:/Apache24/htdocs">
<Directory "c:/Apache24/cgi-bin">


你会发现都是Directory 后面跟一个路径

第一个 是apache的根目录

第二个 是项目空间的根目录

第三个 是存放perl *.pl脚本的目录

Directory 标签内可以配置的参数

1、Options指令–目录的访问特性

option + - 就是要对当前目录的特性进行新增和删除

option none 禁止对目录所有的操作

option all 允许对目录所有的操作,all—所有操作

option ExecCGI 对该目录,可以执行cgi脚本

option Indexes 允许访问该目录(而该目录没有index.html,与DirectoryIndex 配置相关)时,返回目录下的文件列表

option FollowSymLinks 就是允许你的网页文件夹下的链接文件链接到首页目录以外的文件

2、AllowOverride指令

AllowOverride None 不读取.htaccess

AllowOverride All All—-允许.htaccess所有指令,缺省是all

AllowOverride Limit .htaccess函盖具体限定的主机(allow,deny)

AllowOverride AuthConfig .htaccess函盖跟认证有关指令(AuthType,AuthName)

3、order allow,deny 指令

order allow,deny

deny/allow from xxx xxx支持IP/域名/all

注意 关于不同目录命令覆盖的规则是:谁近谁优先(谁离.htaccess文件越近,谁的配置都生效)

5、基于以上情况,我建议我们可以新建一个directory目录

<Directory '你要配置.htaccess生效的目录'>
AllowOverride All
</Directory>


6、注意 AccessFileName 可以指定.htaccess的文件名
比如 AccessFileName htaccess 就是把默认的.htaccess改为htaccess


7、重启服务器 service httpd restart/net restart apache


提供一个简单的.htaccess配置用于测试,相关.htaccess的配置,请关注博主的后续跟新。

<IfModule rewrite_module>
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php
</IfModule>


摘录

(不)使用.htaccess文件的场合

  一般情况下,不应该使用.htaccess文件,除非你对主配置文件没有访问权限。有一种很常见的误解,认为用户认证只能通过.htaccess文件实现,其实并不是这样,把用户认证写在主配置文件中是完全可行的,而且是一种很好的方法。

  .htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在同一个机器上运行了多个用户站点,而又希望用户可以自己改变配置的情况下。

  虽然如此,一般都应该尽可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的段中,而且更高效。

避免使用.htaccess文件有两个主要原因。

  首先是性能。如果AllowOverride启用了.htaccess文件,则Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到,启用.htaccess都会导致性能的下降。另外,对每一个请求,都需要读取一次.htaccess文件。

  其次是安全。这样会允许用户自己修改服务器的配置,这可能会导致某些意想不到的修改,所以请认真考虑是否应当给予用户这样的特权。

备注

Httpd.conf:

(1)Request URI的开头必须以斜线开始;

(2)在寻找Cache文件的时候,必须在开头加上斜线;

(3)在使用-f或者!-f的时候,必须在开头加上斜线。

.htaccess:

(1)Request URI的开头不能有斜线;

(2)在寻找Cache文件的时候,不能在开头加上斜线;

(3)在使用-f或者!-f的时候,不能在开头加上斜线。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  apache .htaccess 服务器