Делаю в скрипте подгрузку модулей в файле index.php с помощью switch и серверной директивы $_SERVER['SCRIPT_NAME'], но ничего не выходит.
Мне нужно, чтобы если пользователь ввёл адрес в браузере http://localhost/sign-in он попал на страницу авторизации.
Делаю вот так:
<?php
$action = $_SERVER['SCRIPT_NAME'];
switch($action) {
case 'sign-in':
require 'sign.php';
break;
default:
echo 'Hello.';
}
При переходе по адресу http://localhost/sign-in выскакивает:
ошибка 404, файл не найден.
Что я делаю неправильно?
Для начала, вам нужно перенаправить все запросы в один файл, например index.php
Для этого создайте в корне сайта файл .htaccess и поместите туда этот код
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)$ index.php [L,QSA]
</IfModule>
После этого можно обрабатывать запросы в указанном для перенаправления файле.
Что бы получить путь запроса - можно использовать эту строку parse_url($_SERVER['REQUEST_URI'])['path']
Всё, теперь можно проверять, но адрес всегда начинается с /, это значит что нужно проверять не sign-in, а /sign-in.
$path = parse_url($_SERVER['REQUEST_URI'])['path'];
switch($path) {
case '/sign-in':
echo 'Это адрес site/sign-in';
break;
default:
echo 'Для этого адреса страница ещё не придумана';
}
Во-первых, чтобы при переходе на http://localhost/sign-in не выскакивала ошибка 404, в папке 'sign-in' должен быть файл index.php с Вашим скриптом.
Во-вторых, $_SERVER['SCRIPT_NAME'] возвращает имя скрипта. В переменной $action никак не может быть 'sign-in' - там '/sign-in/index.php'. Вот эту строку и пишите в case - тогда всё заработает.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости