重写规则行为怪异

时间:2012-02-27 23:34:47

标签: php apache mod-rewrite

当移动到共享托管环境(以及.htaccess文件)时,我的重写规则发生了一些奇怪的事情

在WAMP本地工作时,一切都适用于那些规则

RewriteRule confirmation/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ /index.php?action=confirmation&type=$1&item=$2
RewriteRule bump/([0-9a-zA-Z_-]+)$ /index.php?action=bump&item=$1
RewriteRule item/([0-9a-zA-Z_-]+)$ /index.php?action=item&item=$1
RewriteRule item_login/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ /index.php?action=item_login&type=$1&item=$2

现在它表现得很奇怪。例如 当我转到此url / confirmation / bump / 1330384419_product时,我没有得到确认页面,但我看到的页面应该出现/ bump / 1330384419_product。如果我从htaccess中删除第二个重写规则并刷新,我会正确获得确认页面。类似的行为适用于item和item_login规则。

我不知道到底是怎么回事

1 个答案:

答案 0 :(得分:1)

是否有理由不使用^来表示模式的开头应该与请求的开头匹配,就像使用$来表示结束匹配一样?