Htaccess, убрать всё лишнее

Тема в разделе "PHP", создана пользователем Пек, 14 апр 2020.

XEvil 4.0 Релиз Состоялся!
Модераторы: latteo
  1. Пек

    Пек Постоялец

    Регистр.:
    27 май 2010
    Сообщения:
    84
    Симпатии:
    14
    Добрый день!

    Помогите пожалуйста, как настроить .htaccess что бы из браузерной строки удалялось всё после формата php?

    Пример ссылки - http://localhost/item.php?a=off&iid=4710061, я хочу что бы в браузере отображалось только http://localhost/ или http://localhost/item.php с выводом на экран содержимого именно с http://localhost/item.php?a=off&iid=4710061
    Было бы идеально скрыть и сам item.php, но на сервере есть подпапки http://localhost/forum/index.php, хотелось бы что бы куда на форуме не кликнул, в строке оставалось только http://localhost/forum/

    Заранее спасибо
     
    Последнее редактирование: 14 апр 2020
  2. UJy

    UJy

    Регистр.:
    23 авг 2011
    Сообщения:
    386
    Симпатии:
    137
    Нескромный вопрос: а после удаления в браузерной строке параметров - работоспособность нужной страницы сохраняется? В плане - если перейти по этой ссылке
    http://localhost/item.php вместо этой ссылки http://localhost/item.php?a=off&iid=4710061 у Вас на экране будет отображаться именно та информация, которая нужна?

    Суть Вашего вопроса - "просто удалить параметры", или "сделать человекопонятные URL адреса, удалив параметры из адреса, но что б форум продолжил нормально работать"?
     
    Пек нравится это.
  3. Пек

    Пек Постоялец

    Регистр.:
    27 май 2010
    Сообщения:
    84
    Симпатии:
    14
    Важна именно работоспособность, со скрытием лишних данных. То есть, если мы переходим по ссылке - http://localhost/item.php?a=off&iid=4710061, то получаем необходимые данные из бд, но в браузере отображается только http://localhost/item.php или http://localhost/

    Так же, на форуме есть к примеру топик с ИД 7, вот ссыль - http://localhost/forum/viewtopic.php?id=7, если человек кликнет по такой ссылке то попадет куда надо, но в строке браузера увидит только http://localhost/forum/ либо http://localhost/forum/viewtopic.php - смотря как будет проще это в htaccess сделать.

    Извините, возможно я криво выражаю мысль :dk:
     
  4. UJy

    UJy

    Регистр.:
    23 авг 2011
    Сообщения:
    386
    Симпатии:
    137
    Вот теперь Вы описали задачу достаточно правильно и понятно.
    На основании этой задачи теперь можно сформировать ответ: чисто внеся правки в htaccess - добиться необходимого Вам функционала не получится. Htaccess может поправить путь, либо перенаправить запрос... НО то место, куда отправится запрос должно "уметь" этот запрос понять, обработать и вывести информацию...

    Задача, которую Вы описываете называется "преобразование ссылок с параметрами, в ссылки с ЧПУ адрессами (человеко-понятными). Обычно это делается либо установкой специальных модулей для Вашей CMS (или движка форума), либо если это кастомный форум - написанием модуля преобразования ссылок. Если у Вас популярная CMS - скорей всего модуль уже кем-то написан, или встроен в движок. Если это самописная CMS - тут уже задачка может превратиться в достаточно сложную... Как-то так...
     
    Пек нравится это.
  5. Пек

    Пек Постоялец

    Регистр.:
    27 май 2010
    Сообщения:
    84
    Симпатии:
    14
    Понял, спасибо большое за ответы, основной движок и форум - все самопис, буду тогда дальше копать
     
  6. garphild

    garphild Постоялец

    Регистр.:
    19 май 2009
    Сообщения:
    56
    Симпатии:
    31
    Ну так если самопис, то еще лушче. Посмотрите как устроен роутинг и сделайте его ЧПУ.

    По .htaccess. Давно уже не возился с апачем. И не на чем проверить. Но по идее должно сработать вот так:

    RewriteRule ^item/(.*)/(.*)$ /item.php?a=$1&iid=$2 [R=301]

    Тогда http://localhost/item/off/4710061 пойдет на http://localhost/item.php?a=off&iid=4710061

    Такой вариант можно пользовать, если нужно куда-то ссылку отправить чтоб типа красиво было.
    Но там может начаться дичь всякая с внутренними ссылками в темплейтах. Особенно если они относительные.

    А вообще @UJy прав полностью. Нужно перекапывать движок и смотреть как устроен роутинг и шаблоны.

    P.S. Еще можно посмотреть в сторону https://github.com/browserstate/history.js/ и его метода
    replaceState для подмены урла.
     
    Последнее редактирование: 15 апр 2020
    Пек нравится это.