.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 в корневой каталог?
Ответы
Ответ 1
RedirectMatch
использует регулярное выражение, сопоставляемое с URL-адресом. И ваше регулярное выражение /contact.php
просто означает любой URL-путь, содержащий /contact.php
, но не только любой URL-адрес, который точно равен /contact.php
. Поэтому используйте привязки для начала и конца строки (^
и $)
:
RedirectMatch 301 ^/contact\.php$ /contact-us.php
Ответ 2
Это должно сделать это
RedirectPermanent /contact.php /contact-us.php
Ответ 3
redirect 301 /contact.php /contact-us.php
Нет смысла использовать правило redirectmatch, а затем писать свои ссылки, чтобы они были точными. Если вы не включаете, вам не нужно исключать! Просто используйте перенаправление без соответствия, а затем обычно используйте ссылки
Ответ 4
Вы также можете использовать RewriteRule, если хотите, чтобы соответствие шаблона и перенаправление URL-адресов.
Ответ 5
Если вы предпочитаете использовать простейшее возможное решение, альтернативу 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.
Ответ 6
Это перенаправит страницу вашего магазина на вашу страницу контактов
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
Redirect 301 /storepage /contactpage
</IfModule>