Как получить переменную с $ GET
Здравствуйте, в моем htaccess так:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1
RewriteRule ^download/([A-Za-z0-9]+)$ index.php?a=download&k=$1 [QSA,L]
И в скачать.php
<?php
$k = $_GET['k'];
echo $k;
Но возвращает эту ошибку, когда я download/?k=aaaa
download/?aaaa
Notice: Undefined index: k
Index.php
<body>
<?php
require 'config/tratarUrl.php';
include $pag;
?>
</body>
TratarUrl.php
<?php
$pUrl = strip_tags(trim(filter_input(INPUT_GET, 'url', FILTER_DEFAULT)));
$sUrl = (empty($pUrl) ? "index" : $pUrl);
$url = array_filter(explode('/', $sUrl));
if (count($url) > 1)
{
$cont = 1;
foreach ($url as $arg)
{
define("PARAM" . $cont, $arg);
$cont++;
}
}
else if (count($url) == 1)
{
if (file_exists(DIR_PAGES . $url[0] . '.php'))
{
$pag = DIR_PAGES . $url[0] . '.php';
}
else
{
if($url[0] != 'index')
{
$pag = DIR_PAGES . '404.php';
}
else
{
$pag = DIR_PAGES . 'home.php';
}
}
} else {
$pag = DIR_PAGES . '404.php';
}
1
Author: Lucas Caresia, 2017-03-22
1 answers
Правила должны содержать [QSA,L]
.
Flag
QSA
означает, что будет принимать строку запроса.Flag
L
означает, что если правило соответствует, не будет обрабатывать следующую строку
Меняйте порядок их правления:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^download/([A-Za-z0-9]+)$ index.php?a=download&k=$1 [QSA,L]
RewriteRule ^(.*)$ index.php?url=$1
1
Author: Papa Charlie, 2020-06-11 14:45:34