У меня такая ошибка:
Примечание: смещение неинициализированной строки: -1 в App.php в строке 8
строка 8 - вторая строка ниже:
$uri = $_SERVER['REQUEST_URI'];
if (!empty($uri) && $uri[-1] === "/"){
header('Location: '. substr($uri, 0, -1));
header('HTTP/1.1 301 Moved Permanently');
exit();
}
Я просто хочу перенаправить на index.php, если uri - index.php /
Моя версия php - 7.0.30, этот код должен работать (я взял его из учебника php)
О, и, конечно же, расположение заголовка не работает, если я собираюсь index.php /, он меня не перенаправляет.
почему у вашего массива отрицательный индекс? var_dump($uri); exit;, чтобы увидеть, что у вас есть на самом деле
@delboy Это не массив, это строка.
@ Script47 $ uri [-1] - последний символ $ uri. Итак, если это "/", это означает, что URL-адрес заканчивается на "/", поэтому я удаляю его.






Отрицательные смещения поддерживаются начиная с PHP 7.1, как четко указано в руководство.
Хорошо, это объясняет, почему он получил ошибку. Но этот ответ не имеет для него решения? ... Хм.
В PHP 7.0 нет поддержки смещения отрицательной строки.
Вы можете лучше проверить с
substr($uri, -1) === "/"
при использовании php 7.0
Вы можете использовать substr($uri, -1) для получения того же результата в версиях PHP ниже 7.1.
В самом деле, вы даже используете его на следующей строчке!
Думаю, можно использовать $uri[strlen($uri)-1].
Что такое
$uri[-1]?