.htaccess 301 перенаправление одной страницы - PullRequest
55 голосов
/ 14 сентября 2009

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

/ contact.php

сейчас:

/ контакт-us.php

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

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

Это в основном нормально - он делает свою работу - проблема в том, что он также перенаправляет:

  • / team1 / contact.php
  • / несуществующая папка / contact.php

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

Ответы [ 6 ]

83 голосов
/ 14 сентября 2009

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

RedirectMatch 301 ^/contact\.php$ /contact-us.php
21 голосов
/ 14 сентября 2009

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

RedirectPermanent /contact.php /contact-us.php 
8 голосов
/ 19 июня 2013
redirect 301 /contact.php /contact-us.php

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

0 голосов
/ 29 сентября 2016

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

    <IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteBase /
    Redirect 301 /storepage /contactpage
    </IfModule>
0 голосов
/ 18 апреля 2013

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

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

1011 * т.е. *

<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 голосов
/ 14 сентября 2009

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

...