htaccess Редиректы (примеры)

Click here to view original web page at wp-kama.ru

Приведенные ниже примеры могут быть добавлены в ваш файл .htaccess именно так, как показано. Только не забудьте изменить путь к файлу, чтобы файл .htaccess знал, где он находится. Также, если вы видите домен example.com, измените его на свое доменное имя.

Следующая строка перенаправляет все URL-адреса вашего сайта на новый сайт.

Redirect 301 / https://example.com/

Использование Redirect в файле .htaccess позволяет перенаправлять пользователей со старой страницы на новую без необходимости сохранения старой страницы. Например, если вы используете index.html в качестве индексного файла, а затем позже переименуете index.html в home.html, вы можете настроить перенаправление для отправки пользователей с index.html на home.html. Например:

Redirect /path/to/old/file/old.html /path/to/new/file/new.html
Redirect /path/to/old/file/old.html https://www.example.com/new/file/new.html

Первый путь

Первый путь к старому файлу должен быть локальным путем, а не полным путем. Так, если файл .htaccess находится в каталоге /example.com, не нужно включать /home/username/example.com в локальный путь. Первая / представляет каталог example.com. Если старый файл находился в этом каталоге, то после / следует имя старого файла.

Второй путь

Второй путь к новому файлу может быть локальным путем, но может быть и полным URL-адресом для ссылки на страницу на другом или том же сервере.

меню

RedirectMatch 301 ^/blog/about /blog/about.html
Redirect /index.html /new/
Redirect /index.html /default.html
Redirect /private/ https://www.example.com/private/

Убедитесь, что другой сайт является вашим собственным. Никогда не делайте горячих ссылок на файлы с других сайтов.

Redirect /img/logo.gif https://www.example.com/images/logo.gif

Если вы хотите использовать регулярное выражение для перенаправления чего-либо, используйте директиву RedirectMatch:

RedirectMatch "^/oldfile\.html/?$" "https://example.com/newfile.php"

Вы также можете перенаправлять ошибки 404. Вместо того чтобы выводить страницу 404, вы перенаправляете на домашнюю страницу сайта.

ErrorDocument 404 https://example.com/

Этот пример перенаправляет файлы из старой директории /blog/archives в новую директорию /archives. Файл должен существовать в новой директории.

RewriteRule ^blog/archives/(.*)$ /newarchives/$1 [R=301,NC,L]

Если посетитель пытается зайти на несуществующую страницу, ему выдается ошибка 404. Вместо этого вы можете перенаправить любой запрос на несуществующую страницу в файл index.php (или любой другой файл index), добавив следующий код в .htaccess:

Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Если индексная страница не index.php, измените последнюю строку на ваш индексный файл.

Этот пример перенаправляет URL-адрес домена ROOT на любой подкаталог. В данном примере автоматически загружается example.com/subdir1:

RewriteEngine on
RewriteRule ^$ /subdir1/ [L]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule (.*) https://example.com/$1 [R=301,L]

Этот пример переписывает URL в другой URL. В результате example.com/1.html переписывается в example.com/abc.php?id=1.

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([0-9]+).html /abc.php?id=$1 [QSA,L]

Ниже приведены пояснения к вышеуказанным правилам:

Дополнительную информацию и примеры по mod-rewrite можно найти по следующей ссылке:

меню

Следующая команда перенаправляет все ссылки на несуществующие файлы или папки на index.php. Однако, если файл или каталог существует, он загружается нормально:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Следующий код заставляет любой http-запрос быть переписанным с использованием https. Например, следующий код заставляет запрос к http://example.com загружать https://example.com. Он также заставляет напрямую связанные ресурсы (изображения, css и т.д.) использовать https:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"

меню

Посетитель может ввести прямой HTTP URL на вашем сайте WordPress, даже если SSL-сертификат активен. Чтобы заставить любой HTTP-запрос перенаправляться на HTTPS, вы можете добавить код в файл WordPress .htaccess. Ниже приведены два варианта кода, которые вы можете использовать. Первый должен работать, как показано, но если нет, попробуйте второй вариант.

меню

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"

# BEGIN WordPress
# The directives (lines) between `BEGIN WordPress` and `END WordPress` are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<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

В этом примере обязательно замените example.com на ваше настоящее доменное имя.

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"

# BEGIN WordPress
# The directives (lines) between `BEGIN WordPress` and `END WordPress` are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<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