.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 в корне?

Author: Dhaust, 2009-09-14

6 answers

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

RedirectMatch 301 ^/contact\.php$ /contact-us.php
 76
Author: Gumbo, 2009-09-14 11:59:36

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

RedirectPermanent /contact.php /contact-us.php 
 20
Author: duckyflip, 2009-09-14 11:51:14
redirect 301 /contact.php /contact-us.php

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

 8
Author: Jon, 2013-06-19 15:48:20

Вы также можете использовать Рерайтер, если вам нужна возможность сопоставлять шаблоны и перенаправлять URL-адреса.

 0
Author: Ryall, 2009-09-14 11:51:16

Если вы предпочитаете использовать простейшее возможное решение проблемы, альтернативой 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.

 0
Author: JW., 2013-04-18 13:57:10

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

    <IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteBase /
    Redirect 301 http://www.youtdomain.com/store http://www.youtdomain.com/contact
    </IfModule>
 -1
Author: gurcharan, 2016-09-29 00:50:37