当前位置 主页 > 服务器问题 > Linux/apache问题 >

    .htaccess重定向和url重写详细介绍

    栏目:Linux/apache问题 时间:2019-02-23 13:48

    .htaccess是需要apache打开虚拟主机支持.htaccess才可以实现下面的功能哦,下面我来介绍关于.htaccess阻止某些ip访问,重定向和url重写,限定访问特点资源,实现缓存等功能介绍 什么是htaccess

    概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

    一个简单的重定向
    复制代码 代码如下:Redirect 301 ^old.html$ http://localhost/new.html
    这是设置一个http状态码为301(永久移动)并把所有访问old.html转向到new.html。使用了正则表达式来匹配访问的页面,后面的url必须是完整路径。

    Url重写

    复制代码 代码如下:
    RewriteEngine on
    RewriteRule ^old.html$ new.html

    第一行打开重写引擎
    第二行是重写规则。这样用户访问old.html时实际却是访问的new.html,而且用户对此好吧知情。因为地址栏里依旧显示是old.html。

    为了在地址栏显示新的访问地址,我们可以加个f标志在rewriterule语句里。

    复制代码 代码如下:
    RewriteRule ^old.html$ http://hostname/new.html [r=301]

    下面是把带查询参数的url重写成对搜索引擎友好的url
    复制代码 代码如下:
    RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3

    这条规则允许访问者以类似这样的
    url products/turntables/technics/sl1210,
    来访问product.php?cat=turntables&brand=technics&prod=sl1210.

    括号里为一个单元,分别对应后面的$1,$2,$3。[^/]+ 在原括号里表示除了/之外的任何一个或是多个字符。

    自定义错误页面

    复制代码 代码如下:ErrorDocument 404"/404.html"
    这是定义404页面无法找到的错误,也可以定义其他错误代码的页面。

    限定访问特点资源

    复制代码 代码如下:
    <Files"protectedfile.html">
    AuthName"Username and password required"
    AuthUserFile/path/to/.htpasswd
    Require valid-user
    AuthType Basic
    </Files>


    保护protectedfile.html,authName是登陆框的提示信息,authuserfile是.htpasswd文件的路径

    阻止某些ip访问

    复制代码 代码如下:
    order allow,deny
    deny from 192.168.0.1
    allow from allOrder


    告诉apache指令的顺序。这里的这个是先允许后拒绝的。虽然allow from all后出现但是还是在前面生效。拒绝了192.168.0.1的访问。也可以按段来屏蔽访问的,只要只指定前面的几段就可以类似,192.168.

    实现缓存

    复制代码 代码如下:
    ExpiresActive on
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"


    第一行开启,下面分别控制各种资源都加上一个月的缓存期。这个功能依赖apache的mod_expires 模块。


    认证举例
    如果你只是为了知道如何认证,而直接从这里开始看的,有很重要的一点需要注意,有一种常见的误解,认为实现密码认证必须要使用.htaccess文件,其实是不正确的。把认证指令放在主配置文件的<Directory>段中是一个更好的方法,而.htaccess文件应该仅仅用于无权访问主配置文件的时候。参见上述关于何时应该与何时不应该使用.htaccess文件的讨论。