Перенаправление URL-адреса, содержащего определенную часть, на другой URL-адрес с помощью htaccess

Я хотел бы знать, есть ли способ перенаправить URL-адрес, который выглядит так:

https://www.example.com/p=d3d82c7c

к

https://www.example.com/polls/poll?poll=d3d82c7c

с помощью хтаксесс.

Что я хочу сделать, так это создать более простую ссылку для пользователей. Это возможно только с htaccess?

PS: код в конце может меняться в каждом URL.

Большое спасибо.

Обычно в вашем случае рекомендуется иметь удобные для пользователя URL-адреса https://www.example.com/p=d3d82c7c, а из бэкэнда он может обслуживаться https://www.example.com/polls/poll?poll=d3d82c7c. Не могли бы вы подтвердить, хотите ли вы также изменить URL-адрес в браузере (перенаправить)? Хотя в вашем вопросе говорится, что, согласно правилу большого пальца, в браузере должны быть видны только удобные для пользователя URL-адреса, поэтому мы подтверждаем это здесь.

RavinderSingh13 26.12.2020 05:44

большое спасибо! нет, в браузере менять не надо. ссылка может измениться на «длинную», когда она уже перенаправлена, иначе у меня могут возникнуть проблемы со всеми ссылками.

ntsu 26.12.2020 12:42
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
2
2
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать этот метод:

Redirect 301 /en/php/project.html http://www.example.org/newpage.html
Ответ принят как подходящий

С вашими показанными образцами, не могли бы вы попробовать следующее. Убедитесь, что вы очистили кеш браузера, прежде чем тестировать URL-адреса.

RewriteEngine ON
RewriteRule ^.*=(.*) polls/poll?poll=$1 [L]

ИЛИ с вашими показанными образцами, если ваш URI всегда начинается с p, вы можете попробовать следовать, но убедитесь, что либо предыдущий, либо этот только один из них должен использоваться одновременно.

RewriteEngine ON
RewriteRule ^p.*=(.*) polls/poll?poll=$1 [L]

Я думаю, что OP хочет внешнего перенаправления URL.

Amit Verma 26.12.2020 05:42

@AmitVerma, да, я тоже так думал, но, учитывая, что правило внешнего URL-адреса должно быть удобным для пользователя, а внутренний URL-адрес должен быть реальным, я выбрал этот подход. Позвольте мне подтвердить один раз с OP в комментариях, ура.

RavinderSingh13 26.12.2020 05:43

извините за беспокойство, почему-то ссылка остается прежней и не меняется в браузере в обоих решениях. сама страница работает до тех пор, пока я никуда не нажимаю, иначе она перенаправляет меня на 404.

ntsu 26.12.2020 13:04

@ntsu, не могли бы вы дать образец (не очень близкий к нему с тестовыми значениями) вашего URL-адреса, который вы здесь нажимаете? Потому что для вашего примера URL-адреса он отлично работал для меня, когда я его тестировал.

RavinderSingh13 26.12.2020 13:06

если я нажму /p=e5eb1c40, я попаду на нужную страницу, но когда я нажму где-нибудь (действие формы), он перейдет на пустую страницу, которая, скажем, /entry.new.php — что неправильно, потому что это должно быть /polls/ entry.new.php, я должен изменить это везде в моем коде или есть другой простой способ? Спасибо.

ntsu 26.12.2020 13:14

@ntsu, поэтому, когда я проверяю URL-адрес http://localhost/p=d3d82c7c, он переписывает его (в бэкэнде) http://localhost/polls/poll?poll=d3d82c7c, как показано в примере, не уверен для других URL-адресов, какие условия вы должны их переписать. Мое первое правило (до ИЛИ) является общим, оно НЕ будет проверять какой URL-адрес попадает, и просто перепишет его на polls/poll?poll=captured value after = in actual requested url. Дайте мне знать, если мы на одной странице, ура.

RavinderSingh13 26.12.2020 13:19

@ RavinderSingh13, я понял. Мне нужно было изменить базовый URL-адрес в коде, это работает лучше всего. большое спасибо и хорошего дня!

ntsu 26.12.2020 13:21

@ntsu, добро пожаловать, приятно знать, что это было исправлено. Так это вы добавили RewriteBase в файл .htaccess? Просто для учёбы спрашиваю :)

RavinderSingh13 26.12.2020 13:22

да, конечно, я сделал!, иначе не сработает;)

ntsu 26.12.2020 13:23

Другие вопросы по теме