Здравствуйте всем! <br/><br/> Поделитесь, пожалуйста, вашим мнением: где именно я могла допустить ошибку в настройке редиректа? Дело в том, что наш сайт переехал с домена .com на .ru, и я прописала следующую команду: <br/><pre><code># Перенаправление с mysite.com на mysite.ru
RewriteCond %{HTTP_HOST} ^(www\.)?mysite\.com$ [NC]
RewriteRule ^(.*)$ https://mysite.ru/$1 [R=301,L]</code></pre><br/> Однако, когда я пытаюсь настроить редирект с www на без www, возникает проблема и всё ломается... <br/><br/> Вот полный файл .htaccess: <br/><pre><code>Options -Indexes
ErrorDocument 404 /404.php
<IfModule mod_php5.c>
php_flag allow_call_time_pass_reference 1
php_flag session.use_trans_sid off
#php_value display_errors 1
#php_value mbstring.internal_encoding UTF-8
</IfModule>
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Перенаправление с mysite.com на mysite.ru
RewriteCond %{HTTP_HOST} ^(www\.)?mysite\.com$ [NC]
RewriteRule ^(.*)$ https://mysite.ru/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index.php/?([^\ \?]*) [NC]
RewriteRule ^ %1/%2 [R=301,L]
</IfModule>
<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
</IfModule></code></pre>
Чтобы настроить 301 редирект с версии сайта с www на версию без www в вашем файле `.htaccess`, вы можете добавить следующие строки кода перед любыми другими правилами редиректа, чтобы они обрабатывались в правильном порядке.
Вот пример, как это сделать:
```apache
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Редирект с www на без www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
# Перенаправление с mysite.com на mysite.ru
RewriteCond %{HTTP_HOST} ^(www\.)?mysite\.com$ [NC]
RewriteRule ^(.*)$ https://mysite.ru/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index.php/?([^\ \?]*) [NC]
RewriteRule ^ %1/%2 [R=301,L]
</IfModule>
```
### Объяснение изменений:
1. **Редирект с www на без www**:
- `RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]`: Условие проверяет, начинается ли хост с `www.`. Если да, то захватывает остальную часть хоста с помощью `(.*)`.
- `RewriteRule ^(.*)$ https://%1/$1 [R=301,L]`: Правило перенаправляет все запросы на аналогичный URL, но без `www.` (где `%1` — это часть, захваченная в предыдущем условии).
### Место вставки:
Убедитесь, что новые строки кода добавлены **перед** другими правилами редиректов, чтобы избежать конфликтов в правилах и обеспечить правильный порядок обработки запросов.
### Проверка работы редиректов:
После внесения изменений не забудьте проверить работу редиректов:
- Перейдите на URL с `www` и убедитесь, что он перенаправляет на URL без `www`.
- Также проверьте, что все другие ваши редиректы работают, как ожидается.
Суть в том, что сайт переехал с .com на .ru, соответствующую команду прописала
А при чем тут .com в .htaccess? У вас хост на .com еще резолвится?
Как настроить 301 редирект .htaccess: www на без www?
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L]