.htaccess 配置以及相关问题的解释
2016-10-19 10:36
267 查看
百度百科的解释:
.htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,
以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
要使的.htaccess生效需要配置apache服务器
关于apache的配置安装就不累述了,可以查看博主的Windows下面安装apache+php+mysql开发环境
需要注意的是:千万不要和PHP扩展的配置搞混了。
仔细观察他们的区别
你会发现都是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文件越近,谁的配置都生效)
提供一个简单的.htaccess配置用于测试,相关.htaccess的配置,请关注博主的后续跟新。
摘录
(不)使用.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的时候,不能在开头加上斜线。
.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的时候,不能在开头加上斜线。
相关文章推荐
- php 配置以及相关问题
- 摩托罗拉SE4500 三星 S3C6410 Wince6.0平台软解码调试记录以及驱动相关问题解释
- TinyHttp学习(二): 代码分块解释以及相关问题
- eeplat面板刷新以及相关配置问题
- IDEA中Tomcat相关——如无法访问localhost:8080欢迎页面,无法配置web.xml以及server.xml,设置download.xml下载目录无效等问题
- Ubuntu 16.04+ROS+ORB-SLAM2配置以及相关问题
- linux系统下的jdk安装,环境变量配置以及tomcat的相关问题
- SSL 证书购买以及Nginx配置相关问题
- Nginx缓存Cache的配置方案以及相关内存占用问题解决
- MDT部署时出现问题!请知道的人详细给我写下 diskpart以及相关配置,MDT分区只能分主分区,不能扩展逻辑
- 摩托罗拉SE4500 三星 S3C6410 Wince6.0平台软解码调试记录以及驱动相关问题解释
- spring mvc需要的 配置文件(以及相关类和接口的详细解释):
- Linux网络服务和网络配置文件以及IP地址相关的解释
- 浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
- phpmyadmin安装配置以及相关问题
- ITK4.9 在QtCreator环境中的配置 以及相关问题
- Qt与Python的混合编程相关配置以及问题说明
- 摩托罗拉SE4500 三星 S3C6410 Wince6.0平台软解码调试记录以及驱动相关问题解释
- spring 动态数据源配置以及相关问题
- Android开发SDK配置以及相关问题的解决