Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
3 / 3 / 0
Регистрация: 19.11.2010
Сообщений: 148

Человеческие URL и одновременно get параметры

22.01.2022, 17:40. Показов 985. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста как настроить переадресацию с человеческими URL и одновременно get параметры.
Т.е. сейчас сервер переводит URL вида

mysite/step1 в mysite?var1=step1

используя правило в .htaccess

Bash
1
2
3
4
5
RewriteCond %{REQUEST_URI} !^/robots\.txt$
 
RewriteCond %{REQUEST_URI} ^/([A-Z0-9a-z_\-]*)$
 
RewriteRule ^(.*)$ index.php?var1=$1
а что если мне при этом всё же нужно передать некоторые get параметры, например

mysite/step1?var2=2&var3=3...&varn=n

В этом случае всё что после ? теряется. В $_REQUEST этих данных нет.

Как мне соединить эти два подхода?

Спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2022, 17:40
Ответы с готовыми решениями:

Как сделать человеческие пути в URL?
Если писать на ASP шаблоны с выводом статической информации из БД, то адрес искомой страницы будет такой: ...

Как скрыть параметры URL и передать их методом пост используя Url.Action()
Здравствуйте. У меня в представлении на сайте есть ссылка, которая формируется в методе действии контроллера MyView1 с помощью...

Как найти URL среди списка URL, если могут присутствовать динамические параметры?
const url = "/animals/15"; const urlList = ; Необходимо найти индекс элемента в массиве, который соответствует строке...

4
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
23.01.2022, 11:31
Лучший ответ Сообщение было отмечено skarden как решение

Решение

Флаг QSA. Пишется в квадратных скобках в конце правила через пробел.

Добавлено через 6 минут
Намного лучше не передавать путь через GET-параметр, тогда и QSA можно не использовать. Полный путь внутри index.php можно получить из $_SERVER['REQUEST_URI'], отделив строку запроса (т.е. GET-параметры), которая тоже передается в этой переменной:
PHP
1
2
3
$path = explode('?', $_SERVER['REQUEST_URI'], 2)[0];
// или
list($path) = explode('?', $_SERVER['REQUEST_URI'], 2);
От слэшей в начале и конце пути можно избавиться [l]trim-ом.

Добавлено через 5 минут
Экранировать дефис в конце (или в начале) множества в регулярном выражении не нужно.

Лучше вовсе убрать это условие и всю обработку делать внутри единой точки входа, в том числе выводить страницу ошибки 404. Конечно, если у вас не микросервисная архитектура

Добавлено через 3 минуты
robots.txt тоже лучше выводить через единую точку входа. А то из-за одного этого файла у вас при каждом запросе выполняется дополнительная проверка.
1
Заблокирован
23.01.2022, 19:46
Цитата Сообщение от estic Посмотреть сообщение
robots.txt тоже лучше выводить через единую точку входа. А то из-за одного этого файла у вас при каждом запросе выполняется дополнительная проверка.
Тоесть, не вывести сразу, как статический файл через nginx, а проксировать вначале на модуль php в Апаче... обработать php-скриптом, а потом только вернуть в nginx и отобразить? Конечно, так быстрее
0
1308 / 1000 / 232
Регистрация: 01.10.2018
Сообщений: 3,894
24.01.2022, 14:29
aca, весельчак, автор где-то упоминал наличие nginx-а?

Если бы все статические файлы возвращались сервером переднего плана, не было бы показанного автором условия. Видимо, за хостинг файлов отвечает другой хост или просто запросы к robots.txt по каким-то причинам не обслуживаются сервером переднего плана, например он обслуживает только запросы к файлам, находящимся в определенных подкаталогах корня, но не в нем самом.

Добавлено через 7 минут
Да, часто бывает так, что чем "глубже" обслуживаются какие-то частные запросы, тем в общем лучше. Не знали?
0
Заблокирован
26.01.2022, 19:50
Цитата Сообщение от estic Посмотреть сообщение
автор где-то упоминал наличие nginx-а?
Будет странно, если он у него не установлен.
Цитата Сообщение от estic Посмотреть сообщение
что чем "глубже" обслуживаются какие-то частные запросы, тем в общем лучше. Не знали?
Я знаю, что всегда, чем проще - тем лучше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.01.2022, 19:50
Помогаю со студенческими работами здесь

Параметры URL
Всем привет! Допустим есть такая ссылка : http://emptyurl.em/empty1.php?empty . Таков вопрос: как можно получить параметр empty и записать...

Параметры в url
Всем привет, с ASP.NET WebPages столкнулся почти впервые, задача вот в чем, на одной из страниц есть список, каждый элемент списка ссылка,...

Убрать параметры из url
Здрасте. есть строка с урлом странички. примерно такая - site/category/category/category/page.html?p=1 вопрос - как от этой ссылки...

Не работают get параметры в URL
Версия WordPress 4.4.5 Сайт kivigrioup.by Плагины: -All In One SEO Pack -Breadcrumb NavXT -Contact Form 7 -Google XML Sitemaps ...

Необязательные параметры в URL
Есть функция: public static function convert_url($pattern){ $m = '#^'; $m = preg_replace_callback('#\{+\}#',...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru