使用htaccess时是否不需要使用$ _GET ['varName']?

时间:2013-05-27 12:40:13

标签: php .htaccess

我刚写了一个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。

2 个答案:

答案 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问题。