Здравствуйте всем! <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]