apache rewrite
.htaccess会用作该目录及其所有的子目录,所以多个就会影响性能,上线放入apache的配置文件比较好,个别必须指定目录的就放入目录
配置文件,首先我们开启rewrite httpd.conf
然后创建.htaccess文件
配置好了,重启apache,这个重写规则,所有的htm文件都会去找html
我们修改.htaccess文件是不需要重启apache的所以在线下的情况是写在文件的,后续上线后最好写入到apache配置文件。就像这样 我们关闭.htaccess的重写功能,直接写入到配置文件
上线前可以多设置查看问题,上线后不要大于2,最好关掉。因为一次访问会产生很多记录日志,访问量大和久了就很庞大。
内部重定向,地址不会改变,外部重定向,地址发生 R外部
1.htm#index 不加 NE 默认会变成 index.htm%23index,我们加了 NE,不进行转码就还是 1.htm -》index.html#index
Test/1.htm -> tmp/1.htm 不加NC会区分大小写,直接找原地址
我们加上基础路径就可以指定下面的重写到指定路径
localhost/1.htm -> localhost/test/1.html
$1 是指前面匹配的第一个()里面值
可以直接调用服务器变量
判断是ip地址 127.0.0.1我们转为localhost,因为是外部重定向,加上R
127.0.0.1/1.htm ->localhost/1.html 地址变化
意思值当这个括号的值是1的时候,我们就进入下面的重写规则,当然要满足第一条。因为我们本地都是127.0.0.1,所以%1是等于1的,实际情况这个%1不一定等于1
我们没假or应该是不成立, www1不是目录,因为不存,重写是不符合规则的,我们输入127.0.0.1/1.htm 还是访问原地址
加了OR就可以了,因为我们代码是在WWW下,是有这目录的我们输入127.0.0.1/1.htm 会去找 127.0.0.1/1.html
写在配置项的外面
文件放在可以访问的路径外面
固定映射,127.0.0.1/test1.shtml -> 127.0.0.1/pagetest1
因为我们的$1不符合dirs的路径,就没有映射到对应的路径,就进入的$1的手动设置的默认root,进入/root/test.php
我们访问设置的URL1就随机映射到/S3/URL1,再次刷新进入/S1/URL1.php
第二个规则符合