У меня есть много страниц с похожими 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. : У меня мало знаний о кодировании. Нужна помощь для моего личного блога
У меня нет навыков кодирования. почитайте в гугле как сделать редирект через .htaccess. Поскольку количество страниц слишком велико, я просто хотел знать, могу ли я сделать это, используя однострочный код.
@RakeshVishwakarma Если вы используете WordPress, то, вероятно, у вас уже есть файл .htaccess
? Порядок директив важен, и зная, какие директивы у вас уже есть, можно избежать конфликтов.
Почему закрыли этот вопрос?! Это не вопрос «общего вычислительного оборудования и программного обеспечения». Это вопрос о перенаправлении HTTP, связанный с логикой веб-приложения - как и тысячи других связанных вопросов на SO!?
Не могли бы вы попробовать следующее, написанное и протестированное с показанными образцами. Пожалуйста, очистите кеш браузера, прежде чем тестировать 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] все еще не работает
@RakeshVishwakarma, эти правила проверены, и они отлично сработали для меня, есть ли у вас какие-либо другие правила в вашем файле htaccess?
Похоже, что OP хочет внешне 3xx «перенаправить» пользователя, а не внутренне «переписать» запрос (что на самом деле не сработает, если они используют WordPress). И что важно, эти директивы нужно будет поставить перед существующими директивами WordPress (фронт-контроллер) в .htaccess
.
Незначительный момент: NC
не требуется при использовании класса сокращенных символов регулярного выражения \w
, поскольку он, естественно, уже включает как прописные, так и строчные буквы.
@MrWhite, спасибо, сэр, что сообщили об этом. Я ценю ваше руководство здесь. Вы действительно чемпион правил. Ваше здоровье.
@ RavinderSingh13, должен ли я скопировать и вставить сюда содержимое .htaccess для справки. Надеюсь, это не вызовет у меня никаких проблем с безопасностью
@RakeshVishwakarma, нет, всегда рекомендуется показывать только образцы, а не точные значения для любого кода / правил и т. д., Ставьте значения, похожие на фактические, НЕ фактические, ура.
@RakeshVishwakarma, вы можете просмотреть комментарии мистера Уайта, которые тоже могут натолкнуть вас на некоторые мысли, сообщите нам о его вопросах, спасибо.
Хорошо. Сайт работает на версии wordpress 5.6. О каком правиле говорит @MrWhite? Можете ли вы помочь мне понять то же самое
@ RavinderSingh13 Есть ли другой способ, кроме .htaccess, для достижения цели?
@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.
вы можете ответить ему на это.
где-то в файле написаны следующие строки # BEGIN WordPress # Директивы (строки) между "BEGIN WordPress" и "END WordPress" # генерируются динамически и должны изменяться только через фильтры WordPress. # Любые изменения директив между этими маркерами будут перезаписаны. @MrWhite, вы имеете в виду это?
@RakeshVishwakarma Приведенные выше директивы должны идти перед разделом # BEGIN WordPress
. Также похоже, что вы хотите «перенаправить» пользователя (а не «переписать»), поэтому вам нужно добавить флаг R
(или R=302
) в директиву RewriteRule
. например. RewriteRule ^([\w-]+)/([0-9]+)/?$ /$1-$2 [R=302,L]
— обратите внимание также на префикс косой черты в строке подстановки (хотя это может быть необязательно, поскольку WordPress обычно определяет RewriteBase /
. Однако рекомендуется явно указывать префикс косой черты во внешнем перенаправлении).
Фантастика !! ЭТО СРАБОТАЛО. Большое спасибо @MrWhite и Равиндер Сингх
@RakeshVishwakarma, спасибо и мистеру Уайту. ура и счастливого обучения.
@ RavinderSingh13: Вам нужно исправить ответ, включив R=302
, как предложил MrWhite.
@anubhava, спасибо, анубхава, сэр, за напоминание, я добавил это сейчас в ответ.
@RavinderSingh13, пожалуйста, помогите мне, как настроить приведенное выше кодирование, если часть «главной страницы» отличается, но суффикс (т.е. номер тот же. Например, example.com/mainpage/1 должен перенаправлять на example.com /NEWPAGE-1
@RakeshVishwakarma, конечно, вы могли бы открыть новый вопрос для того же и дайте мне ссылку, я мог бы ответить на него там, спасибо.
Добро пожаловать в SO, пожалуйста, поделитесь своим файлом правил .htaccess в своем вопросе, спасибо.