Apache伪静态
Apache伪静态
Alex配置开启伪静态模块
- 打开配置文件httpd.conf
- 启用rewrite
1
# LoadModule rewrite_module modules/mod_rewrite.so //去除前面的 #
- 启用.htaccess
- 在虚拟机配置项中
AllowOverride None
修改为:AllowOverride All
Rewrite 写法
- 测试htm 跳转到html文件
- 根目录下建一个.htaccess文件写入一下内容
1
2RewriteEngine on
RewriteRule ^(.*)\.htm$ $1.html RewriteEngine on
启用重写RewriteRule ^(.*)\.htm$ $1.html
重写规则 匹配任意开头名称并且以.htm
结尾的请求 转到匹配的名称以.html
结尾的地址
- 根目录下建一个.htaccess文件写入一下内容
301/302跳转
1 | RewriteEngine on |
- 跳转区别
- 301永久重定向,地址连地址会发生变化
- 302临时重定向,地址栏不会发生变化
RewriteRule C flag
- 与下一条规则成为一个整体,如果这一条不匹配,吓一跳就不进入
1
2RewriteRule ^(.*)\.htm$ /$1.html [c]
RewriteRule ^(.*)\.html$ /$1.php - 访问1.htm可以匹配第一条,会接着进入下条规则,相反如果当前这一条不匹配就不会进入下一条
- 访问
1.htm
-> 转到1.php
- 访问
1.html
-> 将不会重写
RewriteRule L flag
- 匹配到后,就停止后边匹配
1
2RewriteRule ^(.*) 1.php?url=$1 [L]
RewriteRule ^(.*) 2.php?url=$2 [L]
第一条匹配到后后边就不会走了- 如果不加
[L]
两条都会匹配
RewriteRule NE flag
- 不对url中的特殊字符进行hexcode转码
1
RewriteRule ^(.*)\.htm /index.php#$1 [R,NE]
RewriteRule NC flag
- 匹配地址不区分大小写
1
RewriteRule ^test/(.*) test_new/$1 [NC]
RewriteRule G flag
- 请求的网页已经失效了
1
RewriteRule ^(.*)\.htm$ - [G]
RewriteRule QSA flag
- 用于在url中截取查询字符串
1
RewriteRule ^(.*)\.htm$ /index.php?r=$1 [QSA,R]
RewriteBase URL-path
- 设置目录级重写的基准url, 访问文件路径前加上基础目录
- RewriteBase /test/
1
RewriteRule ^(.*)\.htm$ $1.html
RewriteCond
- 指定一个过多个规则条件,在RewriteRule 中匹配到执行
1
2RewriteCond $1 'test'
RewriteRule ^(.*)\.htm$ /$1.html - 只有匹配到条件
test
才会重写 - 通过系统常量定义
1
2RewriteCond %{HTTP_HOST} '127.0.0.1'
RewriteRule ^(.*)\.htm http://localhost/$1.html [R] - 多级条件
1
2
3RewriteCond %{HTTP_HOST} '127.0.0.(.*)'
RewriteCond %1 "1"
RewriteRule ^(.*)\.htm http://localhost/$1.html [R] - OR 多级判断默认是AND
- 图片防盗链
1
2
3RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !localhost [NC]
RewriteRule \.(gif|jpg|png)$ [F,NC] - 防盗链所有图片转到logo图
1
2
3
4RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !localhost [NC]
RewriteRule ^(.*)logo\.png$ $1logo.png [NC,L]
RewriteRule \.(gif|jpg|png)$ /logo.png [R]