.перенаправление htaccess 301 на одну страницу
-
07-07-2019 - |
Вопрос
После редизайна сайта у меня есть пара страниц, которые нужно перенаправить.Все остается в том же домене, просто пара вещей была реорганизована и / или переименована.Они имеют такую форму:
/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>