Как такое реализовать? - site.ru?q=page открывать по site.ru/page

12
SS
На сайте с 15.12.2015
Offline
83
256

Добрый день.

Есть сайт такого типа что страницы открываются по ссылкам вида  site.ru?q=page

Необходимо это переделать чтобы эти страницы открывались по новым ссылкам вида site.ru/page

Сейчас проблема в том что при переходе на  site.ru/какай_то_page я получаю 404 и не могу использовать пыхлогику. Как это можно обойти?

Пробовал очищать  .htaccess - не помогло. Может наоборот что то нужно туда добавить?

Размещение естественных ссылок на тематических порталах, отзовиках, справочниках (/ru/forum/1013919)
Asmin
На сайте с 25.07.2021
Offline
60
#1

Для того, чтобы переадресовать старые ссылки в новый формат, можно использовать файл .htaccess и модуль mod_rewrite веб-сервера Apache.

Ниже приведен пример правил в файле .htaccess, которые переадресуют запросы вида "site.ru?q=page" на новый формат "site.ru/page":

RewriteEngine On

RewriteCond %{QUERY_STRING} ^q=(.*)$

RewriteRule ^(.*)$ /%1? [R=301,L]

Эти правила используют регулярные выражения для перехвата значения параметра "q" в запросе и перенаправления на новый URL без этого параметра.

После добавления этих правил в файл .htaccess, запросы вида "site.ru?q=page" будут автоматически перенаправлены на "site.ru/page", и вы сможете использовать вашу PHP-логику на новых страницах.

Важно убедиться, что модуль mod_rewrite включен на вашем веб-сервере Apache и что ваш файл .htaccess находится в корневом каталоге вашего сайта.


BrickLayer
На сайте с 13.06.2020
Offline
94
#2
>>> Может наоборот что то нужно туда добавить?
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /?q=$1 [L,QSA]
W1
На сайте с 22.01.2021
Offline
291
#3
SERM-service :

Необходимо это переделать чтобы эти страницы открывались по новым ссылкам вида site.ru/page

Решений 2:

1) переделать роутинг движка
2) настроить .htaccess

SERM-service :

Сейчас проблема в том что при переходе на  site.ru/какай_то_page я получаю 404 и не могу использовать  пыхлогику. Как это можно обойти?

Это то же самое, что написано выше.

SERM-service :

Пробовал очищать  .htaccess - не помогло. 

Это как это - "очищать"? Удалять содержимое что ли? Естественно, не поможет, если отсутствуют необходимые директивы.

Решение, которое выше предложил BrickLayer, вполне работоспособное, если нет ещё каких-то заморочек на сайте, и если его правильно вставить в .htaccess. Но будут дубли, как отметил ниже miketomlin.

То, что предложено Asmin, работать не будет, естественно.

Мой форум - https://webinfo.guru –Там я всегда на связи
M
На сайте с 04.12.2013
Offline
223
#4

Лучше переделать фронт-контроллер, чтобы он мог обрабатывать непосредственно адреса вроде /page без дублей /[index.php]?q=page 😉

Есть готовые фронты, которые могут сами делать роутинг по БД и подтягивать др. данные из БД, например G-Drive. Он даже многокомпонентные пути поддерживает – см. демки в моей статье Как сделать единую точку входа с ЧПУ?

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
W1
На сайте с 22.01.2021
Offline
291
#5
miketomlin #:
Есть готовые фронты

Ну мы же знаем, что готовые фронты предоставляет каждая первая из популярных CMS ;)
Наверное, логичнее всё же доработать то, что уже есть в CMS сайта, нежели городить что-то постороннее.

N5
На сайте с 14.12.2018
Offline
51
#6
Еще все таки следовало бы добавить к инструкции по файлу .htaccess, что решение вашей задачи через .htaccess, это далеко не самое оптимальное решение, по возможности так делать не нужно)
totamon
На сайте с 12.05.2007
Offline
437
#7
SERM-service :
Сейчас проблема в том что при переходе на  site.ru/какай_то_page я получаю 404 и не могу использовать пыхлогику.

404 ошибку таже пыхлогика выводит, сначала ее переделать... это что вообще? самопис?

ну или да https://searchengines.guru/ru/forum/1073615#comment_16872026 в правильном направлении

но я бы советовал обратиться к специалисту, эту тему нужно понимать🤔

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
M
На сайте с 04.12.2013
Offline
223
#8
webinfo #:
Ну мы же знаем, что готовые фронты предоставляет каждая первая из популярных CMS ;)

Я о простых фронтах, которые тем не менее нагружены достаточным функционалом, чтобы делать несложные сайты без дописывания или с мин. дописыванием кода.

webinfo #:
Наверное, логичнее всё же доработать то, что уже есть в CMS сайта, нежели городить что-то постороннее.

Это понятно. Я об этом написал в первую очередь. Но вдруг у ТСа там какая-нибудь жесть под капотом, которую проще выкинуть, чем переписать.

M
На сайте с 04.12.2013
Offline
223
#9
totamon #:
404 ошибку таже пыхлогика выводит
Совсем не обязательно. ТС явно пихает запросы в точку входа /[index.php]. Все, что идет мимо этого пути, может и Web-сервером обрабатываться.
SS
На сайте с 15.12.2015
Offline
83
#10
miketomlin #:
Совсем не обязательно. ТС явно пихает запросы в точку входа /[index.php]. Все, что идет мимо этого пути, может и Web-сервером обрабатываться.

Да, так и было. В итоге когда пришел на работу все само разрешилось (кто-то поправил), а htaccess остался прежним

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий