通常利用Apache的rewrite模块对URL进行重写的时候,rewrite规则会写在 .htaccess文件里。但是要使Apache能够正常读取 .htaccess文件的内容,就必须对 .htaccess所在的目录进行配置。
首先来认识一下.htaccess文件,概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,当.htaccess中的指令生效时,它将重写原来Apache中默认的指令,但只作用于.htaccess文件所在的目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
首先我们来详细认识一下Apache的AllowOverride指令:
当服务器发现一个.htaccess文件(由AccessFileName指定)时,它需要知道在这个文件中声明的是哪些指令能覆盖在此之前指定的配置指令。
AllowOverride指令仅允许存在于<Directory>配置段
AllowOverride仅在不包含正则表达式的<Directory>配置段中才是有效的。在<Location>, <DirectoryMatch>, <Files>配置段中都是无效的。
一般从安全性考虑,更目录的AllowOverride属性一般都配置成不允许任何Override,即原文配置是这么写的:
<Directory />
AllowOverride None
</Directory>
AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的。 当AllowOverride设置成None时,相应的配置目录下的 .htaccess 文件是不被读取,被完全忽略的,此时 .htaccess文件也就完全不生效。 当AllowOverride设置成 All 时,所有具有“.htaccess”作用域的指令都会生效,意味着原来Apache中的指令都将会按 .htaccess文件中的指令重写。
对于URL rewrite 来说,至少吧他对应的权限开启,也就是开启 FileInfo :即:
<Directory /www/>
AllowOverride FileInfo
</Directory>
对于AllowOverride,还可以对它指定如下一些能被重写的指令类型.
1 AuthConfig 允许使用所有的权限指令,他们包括 AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile 和 Require
2 FileInfo 允许使用文件控制类型的指令。它们包括 AddEncoding AddLanguage AddType DEfaultType ErrorDocument LanguagePriority
3 Indexes 允 许使用目录控制类型的指令。它们包 括 AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon DirectoryIndex FancyIndexing HeaderName IndexIgnore IndexOptions ReadmeName
4 Limit 允许使用权限控制指令。它们包括Allow Deny和Order
5 Options 允许使用控制目录特征的指令.他们包括Options 和XBitHack
Options:
Options指令一般都写在AllowOverride指令的上面:如下形式:
<Directory "D:/AppServ/Apache2.2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Options指令如下:
1 All 准许以下除MultiViews以外所有功能
2 MultiViews 允许多重内容被浏览,如果你的目录下有一个叫做foo.txt的文件,那么你可以通过/foo来访问到它,这对于一个多语言内容的站点比较有用
3 Indexes 若该目录下无index文件,则准许显示该目录下的文件以供选择,禁止目录浏览可以删这项或“-Indexes”。
4 IncludesNOEXEC 准许SSI,但不可使用#exec和#include功能
5 Includes 准许SSI
6 FollowSymLinks 在该目录中,服务器将跟踪符号链接。注意,即使服务器跟踪符号链接,它也不会改变用来匹配不同区域的路径名,如果在<Local>标记内设置,该选项会被忽略
7 SymLinksIfOwnerMatch 在该目录中仅仅跟踪本站点内的链接
8 ExecCGI 在该目录下准许使用CGI
其实使用注意事项及使用.htaccess文件的优缺点请参考百度百科里的.htaccess http://baike.baidu.com/view/91163.htm
如果在.htaccess文件中的某些指令不起作用,可能有多种原因。
最常见的原因是AllowOverride指令没有被正确设置,必须确保没有对此文件区域设置 AllowOverride None 。有一个很好的测试方法,就是在.htaccess文件随便增加点无意义的垃圾内容,如果服务器没有返回了一个错误消息,那么几乎可以断定设置了 AllowOverride None 。
在访问文档时,如果收到服务器的出错消息,应该检查Apache的错误日志,可以知道.htaccess文件中哪些指令是不允许使用的,也可能会发现需要纠正的语法错误。
分享到:
相关推荐
.htaccess文件的配置方法是在文件中添加相关的指令,例如Options Indexes FollowSymLinks AllowOverride All,这将启用目录浏览和符号链接功能,并允许在当前目录下使用.htaccess文件。然后,在.htaccess文件中添加...
在启用`.htaccess`前,需要在Apache的主配置文件`httpd.conf`中开启`AllowOverride`选项,并根据需求限制可使用的指令。 1. **创建`.htaccess`文件**: 在Windows系统中,无法直接创建名为`.htaccess`的文件,可以...
比如,它可以用来实现伪静态URL、防止图片盗链、设置404错误页面、阻止或允许特定IP、禁止访问特定文件类型、以及对目录和文件进行密码保护。 2. **启用 .htaccess**: 要启用 .htaccess 功能,需要在httpd.conf中...
`.htaccess` 文件的使用通常受到服务器管理员通过 `AllowOverride` 指令的限制。`AllowOverride All` 会启用所有指令的使用,而 `AllowOverride None` 则禁止任何改动。 在 `.htaccess` 文件中,注释以 `#` 开头,...
stopping directory listings and using a different file as the index file. .htaccess可以做大量的事情,包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户...
Mod Rewrite模块允许用户通过URL重写规则来控制URL的访问和重定向,这在处理动态URL、隐藏实际文件路径、实现伪静态等方面非常有用。 操作步骤如下: 1. 首先,打开终端并运行命令`sudo a2enmod rewrite`。这个...
5. **重定向**:`Redirect`指令用于实现简单的URL重定向。`Redirect permanent`用于永久重定向,`Redirect temp`用于临时重定向。 6. **URL重写**:开启`RewriteEngine`后,可以使用`RewriteRule`来创建复杂的URL...
使用`RewriteEngine`、`RewriteRule`等指令,可以将旧的URL重定向到新的URL,保持网站的可访问性,即使URL已经改变。 总结来说,`.htaccess`文件提供了诸如错误页面定制、权限控制、IP过滤和URL重写等多种功能,是...
2. URL重写:使用`mod_rewrite`模块,你可以通过`.htaccess`实现URL美化,隐藏参数,或者将旧URL重定向到新URL。这对于SEO(搜索引擎优化)和网站迁移非常有用。 3. 访问控制:`.htaccess`可以用来限制特定目录的...
它的功能非常强大,允许非系统管理员级别的用户进行一些基本的配置调整,比如错误处理、访问控制、URL重定向等,但其可用的指令集是由服务器管理员通过`AllowOverride`指令预先设定的。 1. **错误文档定位** ...
这里设置为 `On`,表示启用规范名称,即在生成重定向URL时,将使用 `ServerName` 和 `ServerAlias` 定义的规范主机名和端口号。 以上就是对Apache httpd.conf文件中常见指令的解释。通过这些指令,我们可以有效地...
找到`AllowOverride`指令,并设置其值为`All`,允许`.htaccess`文件覆盖默认的配置。例如: ``` AllowOverride All ``` 修改后,别忘了重启Apache服务,以使新配置生效。你可以运行`sudo service apache2 ...
成熟的Web应用程序如Drupal和Joomla通常会提供预设的`.htaccess`文件,只需在安装后启用URL重写功能即可。 4. **重启Apache服务器**: - 修改配置后,需要重启Apache服务器使改动生效。重启命令会因Linux发行版而...
在给定的文档中,我们看到的是一个使用Apache服务器和`.htaccess`文件进行URL重写的示例。这个过程涉及到修改服务器配置以及创建或编辑`.htaccess`规则来实现特定的重写规则。 首先,我们需要开启Apache服务器的URL...
- 将`AllowOverride None`改为`AllowOverride All`,允许.htaccess文件覆盖主配置文件中的指令,这对于在各个目录下独立应用Rewrite规则至关重要。 #### 2. .htaccess文件的应用 .htaccess文件是Apache服务器用于...
此文件可以覆盖服务器默认配置,允许用户进行权限控制、URL重定向、定制错误页面等操作。 当用户尝试访问不存在的网页时,服务器会返回一个404 Not Found错误。404错误表示服务器找不到请求的资源。为了提供更好的...
`RewriteRule`指令后面的正则表达式匹配请求的URL模式,如果匹配成功,则将URL重定向到指定的目标(后面跟着的PHP脚本)。正则表达式中的括号用于捕获分组,如`([0-9]+)`,并在目标URL中用`$1`等变量引用。 6. **...
在`httpd.conf`中将相应目录的`AllowOverride None`改为`AllowOverride All`,允许在`.htaccess`文件中放置指令;2. 启用`mod_rewrite`模块,去除`LoadModule rewrite_module modules/mod_rewrite.so`前的注释符号...
`.htaccess` 文件是 Apache 服务器配置中的一个非常重要的组件,它允许你在网站根目录下进行局部配置,比如 URL 重写、访问控制、错误页面定制等。在本例中,我们将关注如何使用 `.htaccess` 实现顶级域名的重定向至...