|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
|
Обработка разных URL на одной странице22.03.2019, 12:11. Показов 5194. Ответов 27
Метки нет (Все метки)
Имеем запросы вида "сайт/страница". По дефолту веб сервер вернёт по такому запросу страницу, указанную после слеша, или выдаст ошибку 404, если соответствующей страницы не существует на сервере.
Мне надо, чтобы веб сервер не искал страницу из URL на сервере, а направлял все запросы на одну страницу, где они уже будут обрабатываться скриптом. Как это можно сделать?
0
|
|
| 22.03.2019, 12:11 | |
|
Ответы с готовыми решениями:
27
Отобразить html-модуль, только на одной странице, соответствующей URL Две разных кодировки на одной странице
|
|
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
|
|
| 22.03.2019, 14:05 | |
|
Поищите по запросу "единая точка входа". Так работает большинство современных сайтов.
1
|
|
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
||||||
| 23.03.2019, 21:12 [ТС] | ||||||
|
Так, ребятки... что-то у меня ничего не работает. Пробовал сделать по разным инструкциям - всё безрезультатно.
Строку "LoadModule rewrite_module modules/mod_rewrite.so" в файле /etc/httpd/conf.modules.d/00-base.conf проверил - она раскомментирована. Файл .htaccess имеет следующий вид:
При вводе URL несуществующей страницы сервер выдаёт 404, как и прежде. Может у меня нет самого модуля mod_rewrite? Как это проверить?
0
|
||||||
|
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
|
||||||
| 23.03.2019, 23:13 | ||||||
Сообщение было отмечено ChildOfFlowers как решение
Решение
У вас виртуальный хостинг или сервер? Если первое, то mod_rewrite наверняка включен. Если второе, вы вообще уверены, что именно Apache активен? Используйте функцию phpinfo() в каком-нибудь php-файле - получите подробную информацию, включая список подключенных модулей.
Добавлено через 5 минут Проверьте, есть ли реакция хоть на что-нибудь в .htaccess, например на ErrorDocument. Если нет, возможно, забыли включить AllowOverride. Лучше это сделать в конфигурационном файле конкретного виртуального хоста:
...При этом AllowOverride лучше отключить тут же явно: AllowOverride None.
1
|
||||||
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
||
| 24.03.2019, 09:53 [ТС] | ||
|
0
|
||
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
|
| 25.03.2019, 14:04 [ТС] | |
|
Я тут ещё один неприятный момент обнаружил. Мы же, когда надо в URL использовать зарезервированный символ не по назначению, записываем его в виде кода со знаком % в начале, чтобы сервер не обращал на него внимание. Так вот, если вставить в URL код слеша (%2f), происходит странное. Во-первых, mod_rewrite не перенаправляет этот запрос на общую страницу, хотя, вроде, по настройкам .htaccess должен перенаправлять все запросы без исключения. Во-вторых, сервер интерпретирует код в слеш, чего, казалось бы, делать не должен. В итоге опять получается ошибка 404. Я думаю это баг...
Может можно как-то допилить .htaccess чтобы обойти его?
0
|
|
|
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
|
|
| 25.03.2019, 17:10 | |
|
Да, есть такое исключение. Попробуйте указать
AllowEncodedSlashes On или AllowEncodedSlashes NoDecode в контексте виртуального хоста.Добавлено через 6 минут В общем-то можно и так оставить, как в моем примере выше. Если кто-то делает подобные запросы, это уже вряд ли относится к обычным пользователям. Скорее всего что-то "прощупывают", а тут чем проще ответ, тем лучше.
1
|
|
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
|||
| 26.03.2019, 12:43 [ТС] | |||
|
Такое ерундовое дело, а сколько тонкостей. У меня тут ещё вопросик возник... надеюсь последний ![]() В моей конфигурации .htaccess прописаны правила перенаправления для файлов и для директорий, как я понял (читабильность у него, конечно, та ещё). Так вот, если в url вбить адрес существующей директории, то попадаем на страницу 403 Forbidden. Естественно, мне бы хотелось обрабатывать этот кейс в общем скрипте. Как это сделать?
0
|
|||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|||
| 26.03.2019, 14:51 | |||
|
ChildOfFlowers,
RewriteCond %{REQUEST_FILENAME} !-d
0
|
|||
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
||
| 26.03.2019, 15:25 [ТС] | ||
|
0
|
||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||
| 26.03.2019, 15:33 | ||
|
ChildOfFlowers,
0
|
||
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
|
| 26.03.2019, 15:35 [ТС] | |
|
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 26.03.2019, 15:40 | |
|
ChildOfFlowers, и при чем тут вот эта строка
RewriteCond %{REQUEST_FILENAME} !-d. Строка с -f действительно нужна, чтобы правило не применялись к существующим файлам.
0
|
|
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
||
| 26.03.2019, 15:49 [ТС] | ||
|
0
|
||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|
| 26.03.2019, 16:53 | |
|
0
|
|
|
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
|
|||
| 26.03.2019, 19:29 | |||
RewriteCond %{REQUEST_FILENAME} !-d? Наверное, откуда-то скопировали. Многие добавляют это условие, совершенно не думая о последствиях. Вы стараетесь разобраться, что похвально Ошибка 403, кстати, может перехватываться и переводиться в 404. Но в данном случае можно избежать этого витиеватого пути, тем более что запросы с именами каталогов могут нести полезную нагрузку и не приводить к 404.Тут есть один тонкий момент. Дело в том, что запросы с именами каталогов наподобие /dir могут приводить к автоматическому перенаправлению на /dir/, и если при этом вы пытаетесь делать обратное, то, мягко говоря, будет нехорошо Но это легко решается при помощи отключения модуля, выполняющего автоматическое перенаправление, или использования специальной директивы в рамках данного модуля.
0
|
|||
|
0 / 0 / 0
Регистрация: 27.03.2019
Сообщений: 3
|
||||||
| 27.03.2019, 17:30 | ||||||
|
Классический пример записи в htaccess:
0
|
||||||
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
|||
| 06.05.2019, 11:40 [ТС] | |||
|
У меня такая структура: index.php, в зависимости от запроса, подгружает (include) модули из директории modules. Собственно после слеша в запросе и указывается имя модуля, соответствующее имени файла модуля. Если удалить RewriteCond %{REQUEST_FILENAME} !-d, index.php не может загружать модули. А с этой строкой вылетает ошибка 403 при запросе mysite/modules. Кстати, и модуль с именем modules у меня действительно существует.
0
|
|||
|
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
|
|||||||||
| 06.05.2019, 13:53 | |||||||||
![]()
0
|
|||||||||
|
15 / 14 / 9
Регистрация: 16.04.2012
Сообщений: 1,090
|
|||||
| 06.05.2019, 14:17 [ТС] | |||||
![]()
0
|
|||||
| 06.05.2019, 14:17 | |
|
Помогаю со студенческими работами здесь
20
продвижение двух разных запросов на одной странице
Обработка двух форм на одной странице Несколько однообразный форм на одной странице. Обработка Как настроить отправку двух разных форм обратной связи на одной странице? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|