apache重定向和伪静态的应用

1.window 加载model模块

  D:\xampp\apache\conf   下的httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so  开启即可
重启apache

2.linux 加载model模块

cd /etc/apache2
ls
vim apache2.conf(里面都是加载得模块)
cd mods-enabled/
ls
cat env.load(查看已加载的模块,若没有可去mods-available加载)
cd mods-available/
ls
ls | grep rewrite.load
cat rewrite.load
cp rewirte.load ../mods-enabled
cd ../../
/etc/init.d/apache2 restart
ps -ef | grep apache

3.重定向
修改APACHE的配置 修改目录权限AllowOverrideAll

生成.htaccess
        RewriteEngine  on  ...

cd /etc/apache2
vim apache2.conf(/var/www/  AllowOverride  All)
/etc/init.d/apache2 restart

4.编写.htaccess文件 放于运行web目录

window下:
echo 1>.htaccess
RewriteEngine on
RewriteRule ^(.*)\.htm$  $1.html              将.htm文件全部变为.html
linux下:
/var/www
vim .htaccess
RewriteEngine on
RewriteRule ^(.*)\.htm$  $1.html       


index.html
zjx

6.在httpd.conf中配置重定向

AllowOverride None
RewriteEngine on
RewriteRule  ^(.*)\.htm$  $1.html           services.msc 重启win下的服务

7。RewirteRule语法说明
格式:RewirteRule 模式匹配 替换的URL 【flags】
模式匹配支持Perl格式的正则表达式和rewrite的变量
多个flag用逗号隔开【R=302,C=】

8.loglevel
设置LogLevel alert rewrite:trace8(1~8)
生产模式不要大于trace2

查看apache_error.log日志文件(错误日志)

只能在httpd.conf文件中设置,不能在.htaccess中设置

9.RewirteRule R flag 强制外部重定向,后面可以加301或302跳转,不加默认302
RewirteRule ^/?(.*).html1.php [R=302]
区别与内部重定向,浏览器上的地址会改变

10.```
RewirteRule ^/?(.*).html /src/1.php
【C】与下一条规则成为一个整体,如果这一条不匹配,下一条就不进入了

11.RewirteRule L flag 结尾规则,立即停止重写操作,并不再应用其他重写规则
     RewirteRule   ^(.*)   first.php?req=$1   [L]
     RewirteRule   ^(.*)   second.php?req= $1   

12.RewirteRule NE flag
不对URL中的特殊字符进行hexcode转码
      RewirteRule   ^(.*)\.htm   /index.html#$1  [R,NE]

13.RewirteRule NC flag
不区分大小写
      RewirteRule   ^test/(.*)   /src/$1  [R,NC]

14.RewirteRule G flag
请求的网页已经失效了(GONE)
      RewirteRule   ^test/(.*)   /src/$1  [G]
    Apache服务器会返回410

15.RewirteRule QSA flag
用于在URI中截取查询字符串
      RewirteRule   ^test/(.*)$   /per.php?name=haha&a=$1  [QSA,R]

16.RewirteBase  URL-path
   设置了目录级重写的基准URL
    RewirteBase  /test/
    RewirteRule   ^test/(.*)  $1.html  ----内部重定向
    RewirteRule   ^test/(.*)   $1.html  [R]   ----外部重定向  (自动在/test目录下,不设置BASE,则默认目录)

17.RewirteCond 指令定义了一个规则的条件
格式:RewirteCond  TestString CondPattern
TestString  使用 $1-9
RewirteCond  $1  "test"
RewirteRule   ^(.*)\.htm  $1.html      匹配后为test.html   ()括号内的值必须匹配为test

18.RewirteCond  服务器变量
TestString  使用说明 %{NAME_OF_VARIABLE}
RewirteCond  %{HTTP_HOST}  "127.0.0.1"

18.RewirteCond  cond变量
TestString  使用说明 %1-9
%1-9  RewirteCond条件中最后符合的条件中的分组成分
RewirteCond  %{HTTP_HOST}  "127.0.0.(.*)"
RewirteCond  %1 "1"

19.CondPattern使用 
-d 是否是目录   -f 是否是文件
-F 文件存在并且可以访问
[NC]  大小写不敏感
[OR] 条件判断的或,如果不加默认是and

20.取值()
          括起来的表达式按次序,后面的匹配后的处理中可以用$1~$N来访问

21.301 永久重定向   302  临时重定向

22.文件访问控制----防盗链

RewriteEngine on
RewirteCond %{HTTP_REFERER} !^ - [F,NC] 以gif|jpg|png结尾的图片

23.限制访问者的IP列表
  限制IP

在httpd.conf中配置RewriteMap
RewriteMap hosts-deny txt:D:/wamp/hosts.deny
在相应的位置建立hosts.deny文件
写入:192.168.2.68 deny
配置.htaccess
RewriteEngine on
RewirteCond {hosts-deny:%{REMOTE_HOST} | NOTFOUND} deny
RewirteRule ^ - [F]
重启apache

24.限制迅雷
通过特征限制迅雷访问
 RewriteEngine on
 RewirteCond  %{HTTP_USER_AGENT} 2.0.50727  [NC,OR]
 RewirteCond  %{HTTP_USER_AGENT}  ^ BlackWido [NC]
 RewirteRule  .  abuse.txt  (重定向到文件)
25.Nginx伪静态配置
防盗链示例

location ~ *.(gif|jpg|png|swf|flv)invalid_referer){
rewrite ^/ www.nginx.cn
#return 404;
}
}

26.thinkphp重定向配置示例
配置方法(将根目录下的.htaccess文件  指向到thinkphp里的public目录下的index.php下)
 RewriteEngine on
 RewirteCond  %{REQUEST_FILENAME}   !-d   访问的不是目录
 RewirteCond  %{REQUEST_FILENAME}   !-f    访问的不是文件
 RewirteRule  ^(.*)$   /think/public/index.php/$1   [QSA,PT,L]    映射到入口文件index,php

你可能感兴趣的:(apache重定向和伪静态的应用)