2.12.3. Redirects

Important points:

Redirect directives must be placed in a file .htaccesslocated in root directory of the site, from which a redirect must be performed.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?site1.com [NC]
RewriteRule ^(. *) http: //www.site2.com/$1 [L,R=301]

Instead site1.com substitute the site address, from which a redirect should be performed, and instead of http://www.site2.com — on which.

Alternatively, you can use webredirect.

RewriteEngine On 
RewriteBase / 
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ https://site.com/$1 [L,R=301]

Instead https://site.com/ substitute the name of another domain, on which a redirect must be performed. The result is similar to the previous one, except that the domain name of the site from which the redirection occurs is not checked.

RewriteEngine On 
RewriteBase / 
RewriteRule ^(.*)$ http://site.com/desired_page/ [L,R=permanent]

Instead http://site.com/desired_page/ substitute the page address of another site, to which a redirect must be performed

RewriteCond %{REQUEST_URI} ^/old/address/$
RewriteRule ^.*$ http://site.com/new/address/? [R=301,L]

Instead сайт.com substitute the address of the new site, on which a redirect must be performed. Instead of /old/address/ specify the page, with which you need to redirect, and instead of /new/address/to which.

Preliminary necessarily turnon processing requests to non-existent subdomains.

RewriteEngine On 
RewriteBase / 
RewriteCond %{HTTP_HOST} ^(.*).site.com [NC] 
RewriteRule ^(.*)$ http://site.com/$1 [L,R=permanent]

Instead сайт.com substitute the address of your site for which the redirect is configured.

RewriteRule ^path/to/file.php$ /new/address/ [L,R=301]

Instead path/to/file.php substitute the file address, with whom a redirect should be performed, and instead of /new/address/ - the address of the target file or page.

RewriteCond %{REQUEST_URI} ^/old/address/$
RewriteRule ^.*$ http://%{HTTP_HOST}/new/address/ [R=301,L]

Instead /old/address/ substitute the page address, with which a redirect should be performed, and instead of /new/address/ — to which.

For a redirect with www.сайт.com on сайт.com:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.сайт.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

Instead сайт.com substitute the address of your site for which the redirect is configured.

For a redirect with сайт.com on www.сайт.com:

RewriteEngine On 
RewriteBase / 
RewriteCond %{HTTP_HOST} ^сайт.com [NC] 
RewriteRule ^(. *) http: //www.site.com/$1 [L,R=301]

Instead сайт.com substitute the address of your site for which the redirect is configured.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:SSL} !=1 [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteEngine On 
RewriteBase / 
RewriteCond %{HTTP:SSL} =1 [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:SSL} !=1 [NC]
RewriteRule ^admin(.*)$ https://%{SERVER_NAME}/admin$1 [L,R]

Instead admin substitute the name of the directory for which the redirect is configured.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:SSL} !=1 [NC]
RewriteCond %{THE_REQUEST} !/path/to/file.php [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Instead /path/to/file.php substitute the path to the file for which the redirect to HTTPS should not work.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:SSL} !=1 [NC]
RewriteCond %{REQUEST_URI} !^/path/to/dir [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Instead /path/to/dir substitute the path to the directory for which the redirect to HTTPS should not work.

Instead php you can specify any other file type that needs to be removed from the address, for example html.
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ /%1 [R=301,L]

Attention!

Removing an extension from URL may adversely affect the operation of certain systems that use POST methods to send data to the script. It is important to keep in mind that such a rule can create problems for the site.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^.*$ $0.php [L,QSA]
RewriteCond %{THE_REQUEST} ([^\s]*)\.php(\?[^\s]*)?
RewriteRule (.*) %1 [R=301,L]

Instead php specify the extension you want.

For example, for example.com/file.html will be redirected to example.com/file, but in fact it will open file.html.

RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ /$1 [R=301,L]
RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]
RewriteCond %{THE_REQUEST} //
RewriteCond %{QUERY_STRING} !http(s|)://
RewriteRule .* /$0 [R=301,L]
Content