apache2.4.7 .htaccess重写url的一些细节

今晚玩了下apache的重写规则,发现一些被容易忽略的细节,分享一下。

首先,说明一下实例环境的其他相关配置:

documentRoot  /var/www/html

.htaccess的放置路径  /var/www/html/L-Production/public

 

1、替换规则的“绝对”和“相对”,例如:

1 # Redirect Trailing Slashes...
2 RewriteRule ^(.*)/$ /$1 [L,R=301]

这是一个用重定向消除url最后斜杠的实现,这里需要注意 /$1 的斜杠,它是一个“绝对”的写法,当我在浏览器输入http://127.0.0.1/L-Production/public/js/,意外发现url被重定向成http://127.0.0.1/js,而当我把 /$1 的斜杠去掉后,url才被重定向为预期的http://127.0.0.1/L-Production/public/js。

 

2、模式匹配的对象与RewriteBase无关,只与.htaccess的所在目录有关,例如:

1 RewriteBase /L-Production
2 
3 # Redirect Trailing Slashes...
4 RewriteRule ^(.*)/$ $1 [L,R=301]

在浏览器输入http://127.0.0.1/L-Production/public/js/,url会被重定向成http://127.0.0.1/L-Production/js,而非http://127.0.0.1/L-Production/public/js。

这说明了 ^(.*)/$ 匹配的字符串是js/,而不是url中除去了/L-Production的public/js,RewriteBase只影响替换规则。

另,我在最后的测试中还发现,当这里的$1加上斜杠后,重定向结果仍然是http://127.0.0.1/L-Production/js,这说明在设置了RewriteBase后,所有的替换规则都变成了"绝对"的。

转载于:https://www.cnblogs.com/chieveit/p/4106678.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值