Как выполнить перенаправление с sait.ru/ на sait.ru/index.shtml?

Стандартная задача в htaccess заключается в удалении index.html или index.php из URL. Однако у меня противоположная задача: на сайте имеется множество подкаталогов, в каждом из которых находится файл index.shtml. Все внутренние ссылки ссылаются именно на эти страницы. В то же время, в поисковых системах были проиндексированы URL без указания страницы, заканчивающиеся на /, например: <a href="https://sait.ru/katalog/" rel="nofollow">https://sait.ru/katalog/</a>. При этом URL <a href="https://sait.ru/katalog/index.shtml" rel="nofollow">https://sait.ru/katalog/index.shtml</a> в базе Яндекса помечен как "DUPLICATE". Подскажите, пожалуйста, как мне правильно настроить редирект, так как у меня недостаточно знаний и времени для этого.
  • 6 марта 2025 г. 12:54
Ответы на вопрос 2
Для выполнения перенаправления с `sait.ru/` на `sait.ru/index.shtml` с использованием `.htaccess`, вы можете воспользоваться следующими правилами. Этот код нужно добавить в файл `.htaccess`, который находится в корне вашего сайта.

```apache
RewriteEngine On

# Перенаправление с / на /index.shtml
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^$ /index.shtml [L,R=301]

# Перенаправление с /подкаталог/ на /подкаталог/index.shtml
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ /$1/index.shtml [L,R=301]
```

### Объяснение кода:

1. **`RewriteEngine On`** — активирует модуль перезаписи.
  
2. **Первый блок правил**:
   - **`RewriteCond %{REQUEST_URI} ^/$`** — проверяет, что запрашиваемый URI является корнем сайта.
   - **`RewriteRule ^$ /index.shtml [L,R=301]`** — производит перенаправление с корня на `index.shtml` с кодом 301 (постоянное перенаправление).

3. **Второй блок правил**:
   - **`RewriteCond %{REQUEST_FILENAME} !-f`** — проверяет, что запрашиваемый файл не существует.
   - **`RewriteCond %{REQUEST_FILENAME} !-d`** — проверяет, что запрашиваемый каталог не существует.
   - **`RewriteRule ^([^/]+)/$ /$1/index.shtml [L,R=301]`** — производит перенаправление с URL подкаталога на соответствующий файл `index.shtml` в этом подкаталоге.

### Важные замечания:

- Не забудьте сделать резервную копию вашего файла `.htaccess`, прежде чем вносить изменения.
- После добавления правил может быть полезно очистить кэш браузера или проверить в режиме "Инкогнито", чтобы убедиться, что редиректы работают правильно.
- Если у вас есть другие правила в `.htaccess`, убедитесь, что эти новые правила не конфликтуют с ними.

После внесения изменений ваши ссылки будут корректно перенаправлены, и вы сможете избежать проблем с дублирующим контентом в поисковых системах.
RewriteEngine On

RewriteRule ^katalog/$ https://sait.ru/katalog/index.shtml  [R=301,L]
Похожие вопросы