Я хотел бы знать, есть ли способ перенаправить URL-адрес, который выглядит так:
https://www.example.com/p=d3d82c7c
к
https://www.example.com/polls/poll?poll=d3d82c7c
с помощью хтаксесс.
Что я хочу сделать, так это создать более простую ссылку для пользователей. Это возможно только с htaccess?
PS: код в конце может меняться в каждом URL.
Большое спасибо.
большое спасибо! нет, в браузере менять не надо. ссылка может измениться на «длинную», когда она уже перенаправлена, иначе у меня могут возникнуть проблемы со всеми ссылками.
Вы можете использовать этот метод:
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.
@AmitVerma, да, я тоже так думал, но, учитывая, что правило внешнего URL-адреса должно быть удобным для пользователя, а внутренний URL-адрес должен быть реальным, я выбрал этот подход. Позвольте мне подтвердить один раз с OP в комментариях, ура.
извините за беспокойство, почему-то ссылка остается прежней и не меняется в браузере в обоих решениях. сама страница работает до тех пор, пока я никуда не нажимаю, иначе она перенаправляет меня на 404.
@ntsu, не могли бы вы дать образец (не очень близкий к нему с тестовыми значениями) вашего URL-адреса, который вы здесь нажимаете? Потому что для вашего примера URL-адреса он отлично работал для меня, когда я его тестировал.
если я нажму /p=e5eb1c40, я попаду на нужную страницу, но когда я нажму где-нибудь (действие формы), он перейдет на пустую страницу, которая, скажем, /entry.new.php — что неправильно, потому что это должно быть /polls/ entry.new.php, я должен изменить это везде в моем коде или есть другой простой способ? Спасибо.
@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, я понял. Мне нужно было изменить базовый URL-адрес в коде, это работает лучше всего. большое спасибо и хорошего дня!
@ntsu, добро пожаловать, приятно знать, что это было исправлено. Так это вы добавили RewriteBase
в файл .htaccess? Просто для учёбы спрашиваю :)
да, конечно, я сделал!, иначе не сработает;)
Обычно в вашем случае рекомендуется иметь удобные для пользователя URL-адреса
https://www.example.com/p=d3d82c7c
, а из бэкэнда он может обслуживатьсяhttps://www.example.com/polls/poll?poll=d3d82c7c
. Не могли бы вы подтвердить, хотите ли вы также изменить URL-адрес в браузере (перенаправить)? Хотя в вашем вопросе говорится, что, согласно правилу большого пальца, в браузере должны быть видны только удобные для пользователя URL-адреса, поэтому мы подтверждаем это здесь.