Вот последний синтаксис, который я пробовал:
Redirect 301 ^/?faqs=name-of-my-question https://faq.new-site.com/name-of-my-question
Директива mod_alias Redirect
не соответствует строке запроса, поэтому она никогда не будет соответствовать. И второй аргумент не является регулярным выражением, поэтому ^/?
недопустимо.
Чтобы соответствовать строке запроса, вам нужно использовать mod_rewrite (директивы RewriteRule
и RewriteCond
). Поскольку вы используете WordPress, который имеет свои собственные директивы mod_rewrite, то вы также должны использовать mod_rewrite. (Не рекомендуется смешивать перенаправления как с mod_alias, так и с mod_rewrite, так как вы можете получить неожиданные конфликты.)
Любое перенаправление, которое вы добавляете в .htaccess
, должно идти перед существующими директивами WordPress. то есть. До раздела # BEGIN WordPress
.
Попробуйте вместо этого что-то вроде следующего:
# REDIRECT: https://old-site.fr/?faqs=name-of-my-question/
# TO: https://faq.new-site.com/name-of-my-question/
RewriteCond %{HTTP_HOST} ^old-site\.fr [NC]
RewriteCond %{QUERY_STRING} ^faqs=name-of-my-question/
RewriteRule ^$ https://faq.new-site.com/name-of-my-question/ [R=302,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
:
Если name-of-my-question
является просто заполнителем для любого вопроса, то вы можете сделать более обобщенный любой вопрос , как показано ниже:
# REDIRECT: https://old-site.fr/?faqs=<any-question>/
# TO: https://faq.new-site.com/<any-question>/
RewriteCond %{HTTP_HOST} ^old-site\.fr [NC]
RewriteCond %{QUERY_STRING} ^faqs=([a-z-]+)/
RewriteRule ^$ https://faq.new-site.com/%1/ [R=302,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
:
Если old-site.fr
и new-site.com
находятся на разных серверах, вы можете удалить начальное условие, которое проверяет соответствие HTTP_HOST
.
Обратная ссылка %1
во второй подстановке RewriteRule
захватывает <name-of-my-question>
из строки запроса.
Обратите внимание, что это 302 (временные) перенаправления. Измените его на 301 (постоянный) только после того, как вы проверили, что он работает нормально (во избежание проблем с кэшированием) - если действительно предполагается, что он постоянный .
UPDATE:
... это не сработало.
Попробуйте изменить шаблон RewriteRule
с ^$
на ^(index\.php)?$
. Другими словами:
RewriteRule ^(index\.php)?$ https://faq.new-site.com/name-of-my-question/ [R=302,L]