Нет необходимости использовать $_GET ['varName'] при использовании 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'];

Но он все еще работал. Это нормальное поведение. Могу ли я использовать это для остальных правил и сайта? Я использую WAMP в Windows 7 Home Premium.

2 ответа

Возможно, вы включили register_globals в php.ini. Вот почему вы получаете переменную с именем индекса массива (здесь $_GET). Не рекомендуется включать register_globals.

Здесь вы можете прочитать , почему register_globals плохо.


По-моему, это не имеет ничего общего с .htaccess. То, что получает PHP, является второй частью правила ReWrite, поэтому переменные $_GET должны быть доступны. Сервер получает http://www.localhost/us/2014, а PHP получает /run/run.php?country=us&year=2014

Как писал *******, это может быть (возможно,) проблема register_globals.

licensed under cc by-sa 3.0 with attribution.