wordpress CMS主题 微信
Home > PHP开发 > 如何书写Apache服务器的伪静态.htaccess文件?

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

高时银博客 PHP开发 点击: 129 次 0 0

对于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
版权所有 © 转载时必须以链接形式注明作者和原始出处!

目前还没有评论。赶快来坐沙发吧。

发表评论