После редизайна сайта у меня есть пара страниц, которые нужно перенаправить. Все остается в одном домене, всего несколько вещей были реорганизованы и / или переименованы. Они имеют форму:
/contact.php
сейчас:
/contact-us.php
Используя файл .htaccess, я добавил эту строку, которую я считаю наиболее рекомендуемой:
RedirectMatch 301 /contact.php /contact-us.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, а затем писать свои ссылки, чтобы они были точными. Если вы не включаете, вам не нужно исключать! Просто используйте перенаправление без соответствия, а затем используйте ссылки обычно
Вы также можете использовать RewriteRule, если хотите, чтобы соответствие шаблона и перенаправление URL-адресов.
Если вы предпочитаете использовать самое простое решение проблемы, альтернативой 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.
Он перенаправит вашу страницу магазина на вашу страницу контактов
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / Redirect 301 http://www.youtdomain.com/store http://www.youtdomain.com/contact </IfModule>