Как получить переменную с $ 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';
}
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