首页 > PHP开发 > 如何书写Apache服务器的伪静态.htaccess文件?

如何书写Apache服务器的伪静态.htaccess文件?

作者: 分类:PHP开发 点击: 953 次
wordpress CMS主题:ssmay主题

    对于PHP网站,大多是apache服务器环境,伪静态文件.htaccess是非常重要的,比如:页面的重定向、页面的跳转......。apache的重写规则是有一定规范的,如果.htaccess文件中书写的不对,网站就会出现问题,甚至打不开,所以,正确书写.htaccess文件,不可忽视。下面就来看看如何正确书写apache服务器的伪静态规则。

    1、RewriteBase 是用来指定一个新的位置来作为重写规则的根目录。

    RewriteBase /gao 表示伪静态文件.htaccess必须放到/gao目录下。

    2、RewriteCode :重写的条件

    RewriteCond %{REQUEST_URI} !^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$ [NC,OR]

    RewriteCond [参数1] [参数2] [参数3]
    参数1:%{REQUEST_URI}【指地址栏中的数据】
    参数2:!^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$【 如果不是这些后缀】
    参数3: [NC,OR]【 不区分大小写,或者下一个条件】

    上面这句代码的意思:如果URL地址栏数据不是以【.css|/.js|/.gif|/.png|/.jpg|/.jpeg】为后缀的,不区分大小写,继续下一个条件。

    header头部信息参数:

    HTTP_USER_AGENT 浏览器
    HTTP_REFERER 上一页
    HTTP_HOST 域名
    QUERY_STRING URL中?后的所有字符
    REMOTE_HOST 远程主机地址,即来源地址
    REQUEST_FILENAME 请求的文件,

    3、RewriteRule :重写的规则

    RewriteRule (.*) http://ssmay.com/$1 [R=301,L] //定义重写规则

    (.*): 原数据,这里是正则表示方式,即URL里不管是什么,任意字符;
    http://ssmay.com/$1: 重写后的数据,$1代表(.*)里的内容;
    [R=301,L] :限制标志符,意思是301重定向,L表示这是最后一条规则。

    RewriteRule 适合的标志符:
    [R]  强制重定向,[R=code] code默认为302  【redirect重定向】
    [F]  禁用URL,返回HTTP 403 错误  【forbidden禁用,不允许】
    [L]  这是最后一条规则,之后规则无用  【last最后】
    G 强制URL为gone,返回401 【gone跑了,死了,过去了】
    P 强制使用代理转发 【proxy代理人】
    N 循环同一个规则,直到不能满足匹配 【next round 重新绕一圈】
    C 如果匹配该规则,则继续下面的有Chain标志的规则 【chained链接 chained with next rule】
    T 强制MIME类型
    NS 如果是内部子请求则跳过 【no case】
    NC 不区分大小写
    NE 禁止URL中的特殊字符自动转义成%[0-9]+的形式 【% $ ;
    QSA 追加请求字符串 【query string append】
    PT 传递给下一个处理 【pass through to next handler】
    S=4 跳过下面的4条规则 【skip=4】
    E=VAR:VAL 设置环境变量 【set environment variable】

    4、其它案例:

    RewriteCond %{REQUEST_FILENAME} !-f 如果文件存在,就直接访问文件,不进行下面的RewriteRule.
    如果不存在或不是文件,就向下执行RewritRule

    RewriteCond %{REQUEST_FILENAME} !-d 如果目录存在就直接访问目录不进行RewriteRule

    RewriteCond %{REQUEST_URI} !^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$
    如果是这些后缀的文件,就直接访问文件,不进行Rewrite
    RewriteRule index.html index.php //index.html重写成index.php
    比如:http://www.andelse.cn/index.html -> http://www.andelse.cn/index.php

    RewriteRule ^test([0-9]*).html$ test.php?id=$1
    比如:http://www.andelse.cn/test8.html -> http://www.andelse.cn/test.php?id=8

    ======================================================================

    1、Options +FollowSymLinks //不是必须的,但在某些服务器如果不设置FollowSymLinks,可能引起500错误。

    2、RewriteEngine On // 打开Rewrite功能,允许重写规则

    3、RewriteCond %{HTTP_HOST} ^wanlimm.com [NC,OR] // 定义生效条件,condition条件
    RewriteCond %{HTTP_HOST} ^fjmnkw.com [NC,OR]

    RewriteCond %{HTTP_HOST} ^www.fjmnw.com [NC]
    // 如果网站域名是wanlimm.com
    // [NC]表示忽略大小写
    // [OR]连接下一条规则

    4、RewriteRule .*.(jpg|png|gif)$ /img/model.jpg //定义重写规则 ,
    // 后缀是 jpg或png\gif的图片地址,替换成 /img/model.jpg

    5、RewriteRule (.*) http://ssmay.com/$1 [R=301,L] //定义重写规则
    // R=301 表示301重定向
    // L 表示这是最后一段规则

    6、ErrorDocument 404 /404.html //404错误页面,这里的404页面在网站根目录,可以修改

    7、RewriteCond %{HTTP_USER_AGENT} (android|blackberry|iemobile|ipad|iphone|ipod|palmos|webos) [NC]
    // 如果操作系统是移动设备
    RewriteCond %{REQUEST_URI} !(\.gif|\.jpg|\.jpeg|\.bmp|\.png) [NC]

    // 如果路径(不带域名)不是图片地址
    RewriteRule ^(.*)$ http://m.fjmnkw.com/$1 [L]
    // 跳转到手机端,这里的$1代表(.*)里的内容

文章作者:高时银博客
本文地址:http://wanlimm.com/77201705135267.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!

上一篇:
下一篇:
wordpress CMS主题:ssmay主题

或许你会感兴趣的文章:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.