Перенаправить несколько URL-адресов через .htaccess

У меня есть много страниц с похожими URL-адресами, например:

https://example.com/mainpage/1
https://example.com/mainpage/2
https://example.com/mainpage/3
.
..
https://example.com/mainpage/100

Я хочу перенаправить их с помощью .htaccess на новые отдельные страницы. Нравиться:

  • https://example.com/mainpage/1 следует перенаправить на https://example.com/mainpage-1
  • https://example.com/mainpage/2 следует перенаправить на https://example.com/mainpage-2
  • https://example.com/mainpage/3 следует перенаправить на https://example.com/mainpage-3

и так далее.

поскольку есть много страниц с очень похожими URL-адресами, я хочу знать, может ли работать один код каждого типа.

P.S. : У меня мало знаний о кодировании. Нужна помощь для моего личного блога

Добро пожаловать в SO, пожалуйста, поделитесь своим файлом правил .htaccess в своем вопросе, спасибо.

RavinderSingh13 23.12.2020 15:35

У меня нет навыков кодирования. почитайте в гугле как сделать редирект через .htaccess. Поскольку количество страниц слишком велико, я просто хотел знать, могу ли я сделать это, используя однострочный код.

Rakesh Vishwakarma 23.12.2020 15:50

@RakeshVishwakarma Если вы используете WordPress, то, вероятно, у вас уже есть файл .htaccess? Порядок директив важен, и зная, какие директивы у вас уже есть, можно избежать конфликтов.

MrWhite 24.12.2020 03:07

Почему закрыли этот вопрос?! Это не вопрос «общего вычислительного оборудования и программного обеспечения». Это вопрос о перенаправлении HTTP, связанный с логикой веб-приложения - как и тысячи других связанных вопросов на SO!?

MrWhite 24.12.2020 15:11
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
2
4
117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не могли бы вы попробовать следующее, написанное и протестированное с показанными образцами. Пожалуйста, очистите кеш браузера, прежде чем тестировать URL-адреса. 1-й специфичен для показанных образцов, сохраняя строку главной страницы в 1-й обратной ссылке и остальные цифры после / во 2-й обратной ссылке, которую мы используем при перенаправлении на ее правую часть.

Специально для образцов:

RewriteEngine ON
RewriteRule ^(mainpage)/([0-9]+)/?$ $1-$2 [R=302,NC,L]

Общий:

RewriteEngine ON
RewriteRule ^([\w-]+)/([0-9]+)/?$ $1-$2 [R=302,L]

Я попробовал этот код: RewriteEngine ON RewriteRule ^(rc-practice-with-explanation)/([0-9]+)/?$ $1-$2 [NC,L] не работает, текущий URL-адрес bodheeprep.com /rc-practice-with-explanation/3 хочу перенаправить на bodheeprep.com/rc-practice-with-explanation-3 Даже пробовал это: RewriteEngine ON RewriteRule ^rc-practice-with-explanation/([0 -9]+)/?$ $1-$2 [NC,L] все еще не работает

Rakesh Vishwakarma 23.12.2020 15:57

@RakeshVishwakarma, эти правила проверены, и они отлично сработали для меня, есть ли у вас какие-либо другие правила в вашем файле htaccess?

RavinderSingh13 23.12.2020 16:22

Похоже, что OP хочет внешне 3xx «перенаправить» пользователя, а не внутренне «переписать» запрос (что на самом деле не сработает, если они используют WordPress). И что важно, эти директивы нужно будет поставить перед существующими директивами WordPress (фронт-контроллер) в .htaccess.

MrWhite 24.12.2020 03:02

Незначительный момент: NC не требуется при использовании класса сокращенных символов регулярного выражения \w, поскольку он, естественно, уже включает как прописные, так и строчные буквы.

MrWhite 24.12.2020 03:04

@MrWhite, спасибо, сэр, что сообщили об этом. Я ценю ваше руководство здесь. Вы действительно чемпион правил. Ваше здоровье.

RavinderSingh13 24.12.2020 04:36

@ RavinderSingh13, должен ли я скопировать и вставить сюда содержимое .htaccess для справки. Надеюсь, это не вызовет у меня никаких проблем с безопасностью

Rakesh Vishwakarma 24.12.2020 08:04

@RakeshVishwakarma, нет, всегда рекомендуется показывать только образцы, а не точные значения для любого кода / правил и т. д., Ставьте значения, похожие на фактические, НЕ фактические, ура.

RavinderSingh13 24.12.2020 08:05

@RakeshVishwakarma, вы можете просмотреть комментарии мистера Уайта, которые тоже могут натолкнуть вас на некоторые мысли, сообщите нам о его вопросах, спасибо.

RavinderSingh13 24.12.2020 08:08

Хорошо. Сайт работает на версии wordpress 5.6. О каком правиле говорит @MrWhite? Можете ли вы помочь мне понять то же самое

Rakesh Vishwakarma 24.12.2020 08:08

@ RavinderSingh13 Есть ли другой способ, кроме .htaccess, для достижения цели?

Rakesh Vishwakarma 24.12.2020 08:09

@RakeshVishwakarma, смотрите комментарии мистера Уайта в разделе вопросов If you are using WordPress then presumably you already have an .htaccess file? The order of directives is important and knowing what directives you have already can avoid conflicts. вы можете ответить ему на это.

RavinderSingh13 24.12.2020 08:10

где-то в файле написаны следующие строки # BEGIN WordPress # Директивы (строки) между "BEGIN WordPress" и "END WordPress" # генерируются динамически и должны изменяться только через фильтры WordPress. # Любые изменения директив между этими маркерами будут перезаписаны. @MrWhite, вы имеете в виду это?

Rakesh Vishwakarma 24.12.2020 08:16

@RakeshVishwakarma Приведенные выше директивы должны идти перед разделом # BEGIN WordPress. Также похоже, что вы хотите «перенаправить» пользователя (а не «переписать»), поэтому вам нужно добавить флаг R (или R=302) в директиву RewriteRule. например. RewriteRule ^([\w-]+)/([0-9]+)/?$ /$1-$2 [R=302,L] — обратите внимание также на префикс косой черты в строке подстановки (хотя это может быть необязательно, поскольку WordPress обычно определяет RewriteBase /. Однако рекомендуется явно указывать префикс косой черты во внешнем перенаправлении).

MrWhite 24.12.2020 11:31

Фантастика !! ЭТО СРАБОТАЛО. Большое спасибо @MrWhite и Равиндер Сингх

Rakesh Vishwakarma 24.12.2020 12:49

@RakeshVishwakarma, спасибо и мистеру Уайту. ура и счастливого обучения.

RavinderSingh13 24.12.2020 12:49

@ RavinderSingh13: Вам нужно исправить ответ, включив R=302, как предложил MrWhite.

anubhava 24.12.2020 16:32

@anubhava, спасибо, анубхава, сэр, за напоминание, я добавил это сейчас в ответ.

RavinderSingh13 24.12.2020 16:35

@RavinderSingh13, пожалуйста, помогите мне, как настроить приведенное выше кодирование, если часть «главной страницы» отличается, но суффикс (т.е. номер тот же. Например, example.com/mainpage/1 должен перенаправлять на example.com /NEWPAGE-1

Rakesh Vishwakarma 06.01.2021 16:05

@RakeshVishwakarma, конечно, вы могли бы открыть новый вопрос для того же и дайте мне ссылку, я мог бы ответить на него там, спасибо.

RavinderSingh13 06.01.2021 16:06

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