4

我只是写了一个 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 Home Premium 上使用 WAMP。

4

2 回答 2

13

您可能已register_globals在 php.ini 中打开。这就是为什么您要使用数组索引名称(此处$_GET)获取变量的原因。打开 不是最佳做法register_globals

你可以在这里阅读更多,为什么 register_globals 不好。

于 2013-05-27T12:43:57.757 回答
2

在我看来,这与 .htaccess 没有任何共同之处。PHP 得到的是 ReWrite 规则的第二部分,因此$_GET变量应该是可访问的。服务器获取http://www.localhost/us/2014,PHP获取/run/run.php?country=us&year=2014

正如 nauphal 所写,这可能是(可能是) register_globals 问题。

于 2013-05-27T12:47:38.790 回答