.htaccess, запрещающий $ _GET params - PullRequest
0 голосов
/ 25 апреля 2020

По сути, я хотел бы передать параметр $ _GET следующим образом:

<a class="btn btn-danger" href="/deleteController.php?delete=<?= $tasks['listid'] ?>"> Delete </a>

Однако, похоже, мой файл .htaccess не видит его как действительный файл :


Warning: require_once(/opt/lampp/htdocs/src/controller/deleteController.php?delete=1): failed to open stream: No such file or directory in /opt/lampp/htdocs/public/index.php on line 14

Fatal error: require_once(): Failed opening required '/opt/lampp/htdocs/src/controller/deleteController.php?delete=1' (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/public/index.php on line 14

И, наконец, мой файл .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L]
</IfModule>

Если бы кто-нибудь мог помочь мне выяснить, как я могу получить .htaccess, чтобы разрешить параметры $ _GET, и все еще требовать Разыскиваемый файл, я был бы очень признателен.

РЕДАКТИРОВАТЬ:

index. php контроллер (до исправления):

$uri = urldecode($_SERVER['REQUEST_URI']);

   if ($uri === '' || $uri === '/' || $uri === '/index.php') {
       $uri = '/task_list_Controller.php';
   }
   require_once(CONTROLLER_PATH . $uri);

1 Ответ

0 голосов
/ 25 апреля 2020

Ваша проблема не связана с Apache.

Warning: 
require_once(/opt/lampp/htdocs/src/controller/deleteController.php?delete=1): 
failed to open stream: 
No such file or directory in /opt/lampp/htdocs/public/index.php on line 14

Fatal error: 
require_once(): Failed opening required '/opt/lampp/htdocs/src/controller/deleteController.php?delete=1'

Вы пытаетесь require_once(.../deleteController.php?delete=1), что, конечно, не будет существовать, так как файл deleteController.php?delete=1 не существует. есть только deleteController.php.

github

В файле /opt/lampp/htdocs/public/index.php в строке 14 я увидел, что вам требуется файл по CONTROLLER_PATH.$uri.

Таким образом, проблема возникает из строки 9, где Вы передаете URI со строкой запроса.

просто напишите это так:

$uri = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);

if ($uri === '' || $uri === '/' || $uri === '/index.php') {
   $uri = '/task_list_Controller.php';
}

if (is_file(CONTROLLER_PATH . $uri)) {
  require_once(CONTROLLER_PATH . $uri);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...