Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 30.08.2017
Сообщений: 64

Не работает get-запрос на сервере, выдает 404 ошибку

10.06.2023, 15:45. Показов 1959. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Не работают GET-запросы, на встроенном PHP-сервере работают, а на хостинге - нет.
В index.php у меня основная и единственная точка входа.
Есть страница second_page и некоторые другие, которые можгут обрабатывать как GET, так и POST-запросы.
Для этого в index.php у меня есть код:
PHP
1
2
3
4
5
6
7
*******
if ($_SERVER['REQUEST_URI'] == '/second_page') {
    require ('../second_page.php');
} elseif ($_SERVER['PATH_INFO'] == '/second_page') {
    require ('../second_page.php');
}
*******
На встроенном сервере все работает, т.е. http://localhost:8000/second_page?ChangeID=5 работает,
в коде страницы я все могу получить.
PHP
1
2
3
4
if (isset($_GET['ChangeID']))
{
*******
}
А на хостинге это не работает...
Гугл подсказывает, что нужно что-то прописать в .htaccess, и все проблемы из-за него.
А какую команду - я не нашел. Буду рад любой помощи.
P.S. Не знаю, в том ли разделе создал тему. Ковыряюсь в документации по Апачу, а найти не могу ответ. Вообще не знаю, в Апаче тут дело?
https://httpd.apache.org/docs/... _host.html
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.06.2023, 15:45
Ответы с готовыми решениями:

Запрос на обновление товара выдает 404 ошибку
написал на php запрос mysql: if(isset($_POST)){ $name_r = $_POST; $desc_r = $_POST; $price_r = $_POST; $pic_r = $_FILES; $id =...

Ajax запрос не работает, но ошибку не выдает
Здравствуйте недавно начал изучать Аjax. (Основи Javascript знаю, jQuery тоже) В уроке который прохожу автор предлагает использовать Аjax...

Подключение к Angular проекту Three.js вызывает ошибку сервере 404
Здравствуйте, Есть небольшая проблемка... Проект на Angular в среде MS VS2017. Проблема с подключением библиотеки Three.js. Вроде все...

30
2 / 2 / 0
Регистрация: 30.08.2017
Сообщений: 64
11.06.2023, 14:10  [ТС]
Студворк — интернет-сервис помощи студентам
Аа, т.е. с помощью parse_url определить параметры, затем с помощью parse_str получить массив с ними, затем, если это массив, не null, не пустой, если в нем есть ID, то поместить значение в $_GET['ID']б если есть Page, то значние в $_GET['Page'] и т.д. а уже потом
PHP
1
require ('../second_page.php');
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,948
11.06.2023, 14:19
$_GET автоматически доступен (упомянутые функции не нужны). А выделить путь можно проще - это адрес запроса до первого вопросительного знака.
0
943 / 559 / 299
Регистрация: 07.11.2022
Сообщений: 923
11.06.2023, 14:26
Цитата Сообщение от boobie Посмотреть сообщение
А есть функция, что сделает это за меня? В смсле - распарсит строку
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
$url = 'https://www.youtube.com/watch?v=H4zOQz8vs4c&t=528';
 
parse_str(parse_url($url, PHP_URL_QUERY), $parameters);
print_r($parameters);
/*
Array
(
    [v] => H4zOQz8vs4c
    [t] => 528
)
*/
?>
1
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,948
11.06.2023, 14:26
Где начинать обрабатывать параметры, во фронт-контроллере или непосредственно в контроллере, решайте сами. Обычно общие однотипные действия выносят во фронт-контроллер. Например, можно проверить все подряд параметры на скалярность (is_scalar) во фронт-контроллере, а существование необходимых параметров - в конкретном контроллере.
1
2 / 2 / 0
Регистрация: 30.08.2017
Сообщений: 64
11.06.2023, 14:26  [ТС]
Просто раз у меня в index.php подключение 15 страниц в зависимости от $_SERVER['REQUEST_URI'], то я последним шагом проверю, есть ли в $_SERVER['REQUEST_URI'] имя страницы + параметры.
PHP
1
2
3
4
5
6
7
8
9
10
<?php
if ($_SERVER['REQUEST_URI'] == '/') {
    require ('../mainpage.php');
} elseif ($_SERVER['REQUEST_URI'] == '/index') {
    require ('../mainpage.php');
} elseif ($_SERVER['REQUEST_URI'] == '/second_page') {
    require ('../second_page.php');
}else {
    require('../page404.php');
}
Цитата Сообщение от estic Посмотреть сообщение
$_GET автоматически доступен (упомянутые функции не нужны).
Или Вы предлагаете какой-то другой способ, которого я до сих пор не понял? (обожаю эти смайлики)
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,948
11.06.2023, 14:37
Цитата Сообщение от boobie Посмотреть сообщение
Или Вы предлагаете какой-то другой способ, которого я до сих пор не понял?
Вы написали в теме, что пока хотите использовать для передачи идентификатора обычный GET-параметр (т.е. в query string). Такие параметры автоматически доступны в $_GET. Но с путем вы в любом случае работаете, чтобы выполнять маршрутизацию. Для этого нужно получить из адреса путь (для описанного мной варианта 1), убрав все лишнее. Достаточно оставить '' (пустую строку для главной и т.п.), 'second_page', etc.
1
2 / 2 / 0
Регистрация: 30.08.2017
Сообщений: 64
11.06.2023, 14:46  [ТС]
estic,
Ого, я толлько сейчас понял, что все уже в $_GET-е.
Мне остается только выяснить, какую страницу открывать
PHP
1
2
print_r($_GET);//выдал все параметры
require('../page404.php');
Все! Огромное спасибо, проблема решена!
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,948
11.06.2023, 14:54
Цитата Сообщение от boobie Посмотреть сообщение
Ого, я толлько сейчас понял, что все уже в $_GET-е.
Ну, я всего лишь два раза вам об этом написал Изучайте справочник. Найдите учебник.

Добавлено через 1 минуту
Цитата Сообщение от estic Посмотреть сообщение
Достаточно оставить '' (пустую строку для главной и т.п.), 'second_page', etc.
PHP
1
2
3
4
5
6
7
8
9
list($path) = explode('?', $_SERVER['REQUEST_URI'], 2);
 
$pathx = trim($path, '/');
 
if (array_key_exists($pathx, $routes)) {
    require PATH. $routes[$pathx].'.php';
} else {
    error(404);
}
1
2 / 2 / 0
Регистрация: 30.08.2017
Сообщений: 64
11.06.2023, 15:08  [ТС]
Цитата Сообщение от estic Посмотреть сообщение
Ну, я всего лишь два раза вам об этом написал
Мне очень стыдно

Добавлено через 14 минут
Я сделал так в index.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
$url =  "//{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
$page_name = parse_url($url,  PHP_URL_PATH);
if ($_SERVER['REQUEST_URI'] == '/') {
    require ('../mainpage.php');
} elseif ($page_name  == '/index') {
    require ('../mainpage.php');
} elseif ($page_name  == '/second_page') {
    require ('../second_page.php');
} else {
    require('../page404.php');
}
Т.е. там, где предполагается GET-запрос, поменял $_SERVER['REQUEST_URI'] на $page_name
Все, вроде, заработало.
0
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,948
11.06.2023, 15:20
В REQUEST_URI нет схемы, хоста и т.п. Это не адрес запроса для прокси.

Так что parse_url может вводить в заблуждение или даже вызывать ошибку

Добавлено через 5 минут
Или вы всегда будете добавлять к REQUEST_URI префикс //host?
0
2 / 2 / 0
Регистрация: 30.08.2017
Сообщений: 64
11.06.2023, 16:41  [ТС]
Вроде как в мануалах пишут, что
PHP
1
$url =  "//{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
Всегда дает полную ссылку.

Хорошо, поставлю Ваш код!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.06.2023, 16:41

Не работает sql запрос выдает ошибку Date' is not a recognized built-in function name
SELECT Фамилия, Имя, Отчество, Должность, Телефон, Дата,Пароль ,Фото ...

Не работает sql запрос выдает ошибку Date' is not a recognized built-in function name
select Фамилия, Имя, Отчество, Должность, Телефон, Дата,Пароль ,Фото ...

Почему NGINX на сервере с Linux выдает 502 ошибку, в то время как без NGINX все работает?
Приложение работает на express.js + socket.io + redis + mysql. Выложил сайт на тестирование на qa-стенд (14.x ubuntu server). На убунте...

Location выдает ошибку 404
Папка с файлом теперь в названии содержит символы _ и # location выдает ошибку 404. Путь правильный, из php по include срабатывает...

GET параметр выдает ошибку 404
Подскажите, как мне работать с Get параметром в Ajax. $.ajax({ url:&quot;select_depart.php&quot;, type: &quot;get&quot;, data:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru