> For the complete documentation index, see [llms.txt](https://olexsyn.gitbook.io/enote/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://olexsyn.gitbook.io/enote/linux/apache/htaccess/modrewrite.md).

# ModRewrite

### Запретить доступ по User-Agent

Этот метод обычно требуется в случае, если доступ к сайту нужно запретить для роботов или программ, имеющих динамические IP-адреса. Подробно о User-Agent мы рассказали в статье нашего блога. Для блокировки достаточно в начало файла .htaccess добавить директивы:

```apache
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} example1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} example2 [NC]
RewriteRule ^.*$ - [F]
```

Вместо example1 и example2 укажите User-Agent роботов или программ, доступ для которых требуется запретить.

###

### Избавиться от дублей страниц из-за слеша

Поисковые системы при индексации сайта могут воспринимать ссылки со слешем (косая черта — `/`) и без него как разные страницы. А еще бывает, что при обращении к таким ссылкам открывается разное содержимое (например, example.com/shop/ — работает, а example.com/shop — отдает код 404). Чтобы устранить эти дубли страниц, примените к сайту эти правила перенаправления 301.

Добавить слеш ко всем страницам сайта можно при помощи правила:

```apache
RewriteEngine on
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
```

Это правило автоматически перенаправит поискового робота и посетителя, например, со страницы *example.com/shop* на *example.com/shop/*.

Чтобы наоборот убрать слеш в конце ссылок на страницы сайта, внесите в файл .htaccess следующие директивы:

```apache
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
```

В эти правила можно добавить исключение для конкретной директории, чтобы на нее правило перенаправления не действовало — например, если это обусловлено особенностями CMS сайта:

```apache
RewriteCond %{REQUEST_URI} !admin/$
```

Добавьте эту строку в середину правила (под остальными RewriteCond) и измените имя директории из примера.
