htaccess

Редиректы в htaccess

Как сделать seo редиректы на www или без него, добавление/удаление расширений у страниц.

1

Добавление www

RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{HTTP_HOST} !^www.
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
2

Удаление www

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
3

Добавление слеша в конец URL

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Иногда не работает с кириллическими доменами, возможен еще вариант:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai/$1/ [L,R=301]
4

Удаление слеша в конце URL

RewriteCond %{REQUEST_URI} ^(.*)/$
RewriteRule ^(.*)/$  /$1 [R=301,L]
5

Редирект с index.php

RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule (.*) http://%{HTTP_HOST} [R=301,L]
6

Редирект .htm на .html

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} \.htm$
RewriteRule ^(.*)\.htm$ $1.html [R=301,L]
7

Замена .html на слеш

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1/ [R=301,L]
8

Если расширение не .html то 404

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule ^(.*)$ index.php?route=404 [L,QSA]
01 ноября 2016
Если нужно запретить выполнение скриптов php в директории, например в uploads, нужно поместить туда файл .htaccess со...