Вопрос

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

/contact.php

это сейчас:

/contact-us.php

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

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

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

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

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

Это было полезно?

Решение

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

Вы также могли бы использовать Перезаписывающий элемент если вы хотели иметь возможность сопоставлять шаблоны и перенаправлять URL-адреса.

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

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

т.е.

<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 /storepage /contactpage
    </IfModule>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top