今天打算研究一下Apache下的Rewrite模块,没想到。。。
这是我的.htaccess文件内容
这是我magicurl.php下面的内容:
只是简单的输出所有的querystring。
按照我的理解,此时如果我访问http://127.0.0.1/test,应该可以看到path被设置为test,然而实际上却是magicurl.php,这是什么原因呢?
推测Rewrite在每次规则匹配之后,如果产生了新的url,那么新的url会重新匹配一遍所有的ruleset,也就是这样一个过程:
test => magicurl.php?path=test
magicurl.php => magicurl.php?path=magicurl.php
为了证实这个猜测,我修改了一下.htaccess的内容:
让每次匹配,都在cookie中记录一下script_filename。
结果,果然如我所想的一般,执行一次之后,cookie中多了test=1和magicurl.php=1这2项,匹配被执行了2次。
通过加上一个判断呢?
行了,就剩下test=1了,这样应该就解决了这个问题了。