我刚写了一个htaccess文件和一个简单的规则。
RewriteRule ^/?([a-z]{2})/([0-9]{4})/?$ /run/run.php?country=$1&year=$2 [NC,L]
This does http://www.localhost/us/2014
在php页面上,我意外地做了:
echo $country.' '.$year;
这给了我下面的输出,这是正确的。
us 2014
我没有这样做:
$country = $_GET['country'];
$year = $_GET['year'];
但它仍然奏效。这是正常的行为吗?我可以将此用于其他规则和网站吗?我在Windows 7家庭高级版上使用WAMP。
答案 0 :(得分:13)
你可能在php.ini中打开了register_globals
。这就是为什么你要使用数组索引的名称变量(这里$_GET
)。打开register_globals
不是最佳做法。
你可以阅读更多here,为什么register_globals是坏的。
答案 1 :(得分:2)
在我看来,这与.htaccess没什么共同之处。 PHP得到的是ReWrite规则的第二部分,因此$_GET
变量应该是可访问的。服务器获取http://www.localhost/us/2014
,PHP获得/run/run.php?country=us&year=2014
正如nauphal所写,这可能(可能是)register_globals问题。