.htaccess 301 перенаправление одной страницы

После редизайна сайта у меня есть пара страниц, которые нужно перенаправить. Все остается в одном домене, всего несколько вещей были реорганизованы и / или переименованы. Они имеют форму:

/contact.php

сейчас:

/contact-us.php

Используя файл .htaccess, я добавил эту строку, которую я считаю наиболее рекомендуемой:

RedirectMatch 301 /contact.php /contact-us.php 

Это в основном прекрасно – это делает работу – проблема, она также перенаправляет:

  • /team1/contact.php
  • /non-existant-folder/contact.php

Есть ли способ указать, что я хочу только перенаправить contact.php в корне?

Solutions Collecting From Web of ".htaccess 301 перенаправление одной страницы"

RedirectMatch использует регулярное выражение, сопоставляемое с URL-адресом. И ваше регулярное выражение /contact.php просто означает любой URL-путь, который содержит /contact.php но не только какой-либо URL-адрес, который точно /contact.php . Поэтому используйте привязки для начала и конца строки ( ^ и $) :

 RedirectMatch 301 ^/contact\.php$ /contact-us.php 

Это должно сделать это

 RedirectPermanent /contact.php /contact-us.php 
 redirect 301 /contact.php /contact-us.php 

Нет смысла использовать правило redirectmatch, а затем писать свои ссылки, чтобы они были точными. Если вы не включаете, вам не нужно исключать! Просто используйте перенаправление без соответствия, а затем используйте ссылки обычно

Вы также можете использовать RewriteRule, если хотите, чтобы соответствие шаблона и перенаправление URL-адресов.

Если вы предпочитаете использовать самое простое решение проблемы, альтернативой RedirectMatch является более базовая директива Redirect .

Он не использует сопоставление шаблонов, и поэтому он более ясен и легче понять другим.

т.е.

 <IfModule mod_alias.c> #Repoint old contact page to new contact page: Redirect 301 /contact.php http://example.com/contact-us.php </IfModule> 

Строки запроса должны переноситься, поскольку документы говорят:

Дополнительная информация о пути за сопоставленным URL-адресом будет добавлена ​​к целевому URL.

Он перенаправит вашу страницу магазина на вашу страницу контактов

  <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / Redirect 301 http://www.youtdomain.com/store http://www.youtdomain.com/contact </IfModule>