Редирект на перемещенные или переименованные страницы
Если вы переименовали или переместили некоторые страницы на сайте и хотите, чтобы посетители увидели уже новые страницы, даже если они обращаются по старому адресу, следует в файл .htaccess прописать следующий код:
Redirect 301 /oldpage.html http://yoursite.com/newpage.html
А в данном случае сработает редирект со страницы на главную сайта:
RedirectMatch 301 /seo/someoldfile.php http://www.seomoz.org
Если у вас вместо «голого» html-сайта установлена какая-либо CMS, то редирект будет таким:
Redirect 301 /oldpage/ http://yoursite.com/newpage/
В сайтах на CMS WordPress можно прописать следующее правило:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Тогда, при изменении урла, при наборе старого интернет-адреса страница редиректится автоматически на новую.
В случае, если нужно прописать редирект c одного домена на новый, то рекомендуется использовать общее правило:
RewriteOptions inherit
RewriteEngine on
RewriteCond %{HTTP_HOST} ^marketnews4u\.info$ [OR]
RewriteCond %{HTTP_HOST} ^www\.marketnews4u\.info$
RewriteRule ^/?$ "http\:\/\/marketnews4u\.com\/" [R=301,L]
или:
Redirect 301 / http://yoursite.com/
В случае, если нужно прописать редирект не только для домена, но и для отдельных страниц, то рекомендуется использовать общее правило:
# Redirect all pages from olddomain.com
# to newdomain.com
RewriteOptions inherit
RewriteEngine on
RewriteCond %{HTTP_HOST} ^marketnews4u\.info$ [OR]
RewriteCond %{HTTP_HOST} ^www\.marketnews4u\.info$
RewriteRule ^/?$ "http\:\/\/marketnews4u\.com\/" [R=301,L]
RewriteRule ^grocery\/$ "http\:\/\/marketnews4u\.com\/grocery\/" [R=301,L]
RewriteRule ^grocery\/digestion\/$ "http\:\/\/marketnews4u\.com\/grocery\/digestion\/" [R=301,L]
RewriteRule ^forest\/foreignforest\/trees\/$ "http\:\/\/marketnews4u\.com\/forest1\/foreignforest1\/trees\/" [R=301,L]
Если вы хотите перенаправить целый сайт на одну конкретную страницу другого сайта, тогда нужно прописать следующее правило:
RewriteOptions inherit
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.spbfinanceru.com$ [OR]
RewriteCond %{HTTP_HOST} ^spbfinanceru.com$
RewriteRule ^(.*)$ https://webdomainplus.com/shop/$1 [R=301,L]
Если домен у вас через палку, например, e-toilet.info, то правило оформляется следующим образом:
# Redirect CPanel Subdomain
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^e\-toilet\.info$ [OR]
RewriteCond %{HTTP_HOST} ^www\.e\-toilet\.info$
RewriteRule ^/?$ "http\:\/\/webdomainplus\.com\/shop\/" [R=301,L]
Для систематического устранения дублей страниц, которые возникают в некоторых CMS, можно использовать следующие правила редиректа:
RewriteEngine on
RewriteCond %{REQUEST_URI} !(/page*)
RewriteRule (.*)\/([0-9]+) $1 [R=301,L]
RewriteEngine on
RewriteCond %{REQUEST_URI} !(/category*)
RewriteRule (.*)page\/([0-9]+/)$ /$1 [R=301,L]
RewriteRule ^page/([0-9]+)/(.)s=(.*)$ /page/([0-9]+)/(.)s=(.*) [L]
или:
# 301 for canonical
RewriteEngine on
RewriteCond %{REQUEST_URI} !(/page*)
RewriteRule (.*)\/([0-9]+/)$ /$1/ [R=301,L]
# 301 for canonical /page/
RewriteCond %{REQUEST_URI} !(/category*)
RewriteRule (.*)page\/([0-9]+/)$ /$1 [R=301,L]
Директива RedirectMatch
Директива RedirectMatch аналогична директиве Redirect за исключением того, что в RedirectMatch возможно использование регулярных выражений, что, несомненно, может быть удобно в некоторых условиях. Например, для организации передачи параметров скрипту в теле URL.
Например, которое вызовет перезагрузку страницы:
RedirectMatch /(.*)/(.*)/index.html$ http://mysite.ru/script.php?par1=&par2=
В регулярном выражении можно использовать любые печатные символы и пробел, но часть символов имеет особое значение:
- круглые скобки () используются для выделения групп символов. В дальнейшем к ним можно обращаться по номеру
- символ ^ обозначает начало строки
- символ $ обозначает конец строки
- символ . обозначает любой символ
- символ | обозначает альтернативу. Например, выражения «A|B» означают «A или B»
- символ ? ставится после символа (группы), который может как присутствовать, так и отсутствовать
- символ * ставится после символа (группы), который может отсутствовать или присутствовать неограниченное число раз подряд
- символ + действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз
- квадратные скобки [] используются для перечисления допустимых символов
- квадратные скобки [^] используются для перечисления недоступных символов
- символ \ ставится перед спецсимволами, если они нужны в своем первозданном виде
- все, что расположено после символа ‘#’, считается комментарием
Вместе с этим читают: 404 страница Атрибуты доступа Блок по IP
