Я понимаю что я скорее всего получу отметки минус за такие вопросы, но у меня уже мозги взрываются - я не понимаю как в зависимости от того что в строке запроса ветвить программу.
Пытался настроить ветвление, на просторах интернета наткнулся на статью где это можно реализовать с помощью GET запросов прямо в ссылках типа <a href="?attr=value"></a>, после встретил эту статью.
Изучил ее. Скачал себе все прилагающиеся к ней доки из репозитория ниже. Изучил их. Суть уловил - в зависимости от того что выдает $_SERVER['REQUEST_URI'] подключаю соответствующий файл.
Пытался реализовать ту же аналогию на своем сайте - не работает.
Вот код который я написал специально для этого вопроса: 1).htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
2)index.php
<?php
$path = explode('/', $_SERVER['REQUEST_URI']);
$page = $path[1];
switch($page) {
case '/':
include "layout.php";
break;
case 'contacts':
include "contacts.php";
break;
case 'link':
include "link.php";
break;
}
3)contacts.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<a href="/">main</a>
<a href="/contacts">contacts</a>
<a href="/link">link</a>
<h1>contacts</h1>
<h1><?= var_dump($_SERVER) ?></h1>
</body>
</html>
4)layout.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<a href="/">main</a>
<a href="/contacts">contacts</a>
<a href="/link">link</a>
<h1><?= var_dump($_SERVER) ?></h1>
<h1><?= var_dump($page) ?></h1>
</body>
</html>
5)link.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<a href="/">main</a>
<a href="/contacts">contacts</a>
<a href="/link">link</a>
<h1>link</h1>
<h1><?= var_dump($_SERVER) ?></h1>
</body>
</html>
Проще привести пример уже некуда - но даже тут аналогия не работает. Подскажите где может быть ошибка или что еще нужно сделать чтобы эта аналогия работала правильно?????
При запуске всеработает прекрасно и ссылка main в том числе, но стоит мне нажать на любую из двух других ссылок - хоть в адресной строке и появляется http://test/contacts, которая по идее должна разбиться на куски и выдать в итоге после обработки нужную страницу - я все равно получаю ошибку 404.
Крик души уже, заранее спасибо)
$_SERVER['REQUEST_URI']выдает пустые значения так как не подключена кapache. Конкретно в данном случае при запуске переменная$_SERVER['REQUEST_URI'] = ""– Reiji Akkerman Nov 24 '22 at 11:03Все настройки отладки делаются на сервере. Когда браузер запрашивает страницу, он отсылает запрос на сервер, который в свою очередь будет обращаться к index.php или куда настроено. Т.е. достаточно поставить брейкпойнт и перезагрузить страницу (при этом настройки отладки надо будет делать как отладку приложения, а не страницы/скрипта)- можете по подробнее рассказать??? Вроде нашел нужную страницу доков но не знаю она ли и где я должен ставить брейкпоинты тоже не совсем понял(в браузере где-то или в VSCode?) https://httpd.apache.org/dev/debugging.html – Reiji Akkerman Nov 24 '22 at 11:42