Файл .htaccess может содержать определенные инструкции для сервера. Этот файл может настроить сервер на запрос пароля для каталога, в котором он находится. Файл .htaccess также можно настроить для автоматического перенаправления пользователей на другой индексный файл или сайт, ограничения или разрешения пользователей на основе IP-адресов и отключения списков каталогов. Возможно, вам никогда не понадобится редактировать файл .htaccess, но если вы это сделаете, вы должны убедиться, что файл называется только «.htaccess», с точкой впереди и без расширения файла .txt или .htm.
Общие правила перенаправления 301 Htaccess
Перенаправить одну страницу
Redirect 301 /pagename.php www.example.com/pagename.html
Перенаправить весь сайт или домен на новый
Redirect 301 / www.example.com
Перенаправить весь сайт в подпапку
Redirect 301 / www.example.com/subfolder/
Перенаправить подпапку на другой веб-сайт
Redirect 301 /подпапка www.example.com
Перенаправить расширение файла, но сохранить имя страницы
Пример: если вы хотите, чтобы расширение .html использовало то же имя файла, но использовало расширение .php.
RedirectMatch 301 (.*)\.html$ www.example.com$1.php
Перенаправление со старого домена на новый домен
RewriteEngine On
RewriteBase /
RewriteRule (.*) www.newdomain.com/$1 [R=301,L]
Перенаправление с поддомена без www на поддомен с www
RewriteEngine On
RewriteBase /
RewriteCond %{http_host} ^domain.com [nc]
RewriteRule ^(.*)$ www.domain.com/$1 [r=301,nc]
Перенаправить домен на адрес www с подкаталогом
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} domain.com [NC]
RewriteRule ^(.*)$ www.domain.com/directory/index.html [R=301,NC]
Перенаправление со старого домена на новый домен, который включает полный путь и строку запроса
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*) www.newdomain.com%{REQUEST_URI} [R=302,NC]
Перенаправление со старого домена с подкаталогом на новый домен без подкаталога, но с полным путем и строкой запроса
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$
RewriteRule ^(.*) www.домен.com/%1 [R=302,NC]
URL-адреса перенаправления с параметрами запроса с файлами, расположенными в корневом каталоге
Пример: исходный URL-адрес — www.domain.ru/index.php
, а новый URL-адрес — www.domain.ru/path-to-new-location/
RewriteEngine On
RewriteCond %{QUERY_STRING} id=3
RewriteRule ^index\.php$ /path-to-new-location/? [Л,П=301]
Перенаправить URL-адреса с параметрами запроса и поместить файлы в подкаталог
Пример: исходный URL-адрес —
www.домен.ru/sub-dir/index.php
, а новая страница —
www.домен.ru/path-to-new-location/
RewriteEngine On
RewriteCond %{QUERY_STRING} id=3
RewriteRule ^sub-dir/index\.php$ /path-to-new-location/? [Л,П=301]
Перенаправьте сайт на HTTPS с HTTP, чтобы исключить дублирование контента.
RewriteEngine On
RewriteCond %{HTTPS} на
RewriteRule (.*) %{HTTP_HOST}%{REQUEST_URI}
Перенаправить сайт с HTTP на HTTPS, чтобы исключить дублирование контента.
RewriteEngine On
RewriteCond %{HTTPS} на
RewriteRule (.*) %{HTTP_HOST}%{REQUEST_URI}
Удалите index.html или index.php и перенаправьте в корень.
RewriteEngine On
RewriteCond %{THE_REQUEST} /index.php HTTP [NC]
RewriteRule (.*)index.php$ /$1 [R=301,L]
RewriteEngine On
RewriteCond %{THE_REQUEST} /index.html HTTP [NC]
RewriteRule (.*)index.html$ /$1 [R=301,L]
Перенаправлять URL-адреса с параметрами запроса в структуру на основе каталогов, сохраняя при этом строку запроса на корневом уровне URL-адреса.
Пример: исходный URL-адрес — www.домен.ru/index.php
, а новая страница — www.домен.ru/100/
RewriteEngine On
RewriteRule ^([^/d]+)/?$ index.php?id=$1 [QSA]
Перепишите URL-адреса с параметром запроса в структуру на основе каталога, сохранив при этом параметры строки запроса в подкаталоге URL-адреса.
Пример: исходный URL-адрес — www.домен.ru/index.php
, а новая страница — www.домен.ru/category/fish/
RewriteEngine On
RewriteRule ^/?category/([^/d]+)/?$ index.php?category=$1 [L,QSA]
Перенаправьте старый веб-сайт на новый домен и сохраните URL-адрес
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example-old\.com$ [NC]
RewriteRule ^(.*)$ www.example-new.com/$1 [R=301,L]
Если вы не хотите передавать путь к новому домену, измените последнюю строку на:
RewriteRule ^(.*)$ www.example-new.com [R=301,L]
Добавляйте завершающую косую черту к URL-адресам без нее
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ www.example.com/$1/ [R=301,L]
Перенаправление с поддомена блога в папку блога
Пример: перенаправление
blog.домен.ru
на
www.домен.ru/blog/
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI}/ блог
RewriteRule ^(.*) www.somewhere.com/%{REQUEST_URI} [R=302,NC]
RewriteRule ^(.*) www.somewhere.com/blog/%{REQUEST_URI} [R=302,NC]
Перенаправить один каталог в другой
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)/old-directory/(.*)$ $1/new-directory/$2 [R,L]