Файл .htaccess работает только на Apache. На Nginx этот файл не используется и не читается. Конкретные настройки зависят от CMS и ее версии.
- для Apache используйте
.htaccess, - для Nginx настраивайте правила в конфигурации виртуального хоста (server block),
- используйте конфигурацию, которая соответствует версии CMS,
- перед изменением
.htaccessсохраните резервную копию, - при ошибке 500 Internal Server Error восстановите предыдущую версию файла и проверьте конфигурацию.
Apache и Nginx: в чем разница
Apache и Nginx по-разному обрабатывают правила сайта. На Apache CMS может использовать .htaccess, а на Nginx те же задачи настраивают в конфигурации веб-сервера.
.htaccess.htaccess или конфигурации сервераmod_rewritetry_files, rewriteКак найти и изменить .htaccess
-
1
Откройте корневую папку сайта через файловый менеджер панели управления или FTP.
-
2
Найдите файл
.htaccess. Это скрытый файл, поэтому при необходимости включите отображение скрытых файлов. -
3
Перед изменением скачайте файл или сохраните его копию.
-
4
Откройте
.htaccessв редакторе и внесите необходимые изменения. -
5
Сохраните файл и проверьте главную страницу и несколько внутренних страниц сайта.
Важно
Не переносите .htaccess между разными CMS или версиями CMS без проверки. Правила маршрутизации могут отличаться.
WordPress
Для WordPress на Apache базовые правила ЧПУ выглядят так:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Если сайт работает на Nginx, .htaccess не используется. Базовое правило маршрутизации можно задать так:
location / {
try_files $uri $uri/ /index.php?$args;
}
Точная конфигурация Nginx зависит от структуры сайта и настроек сервера.
Joomla
В Joomla файл htaccess.txt содержит правила для Apache. Для использования ЧПУ его обычно переименовывают в .htaccess и размещают в корневой папке сайта.
Используйте файл из установленной версии Joomla. Не заменяйте его конфигурацией от старой версии CMS.
Для Nginx .htaccess не используется. Базовая маршрутизация может выглядеть так:
location / {
try_files $uri $uri/ /index.php?$args;
}
Если на Nginx не настроить маршрутизацию после включения ЧПУ, внутренние страницы Joomla могут возвращать ошибку 404 Not Found.
Точная конфигурация зависит от версии Joomla и настроек Nginx.
1С-Битрикс
Для Битрикс на Apache ЧПУ можно настроить через urlrewrite.php. Базовый вариант правила:
<IfModule mod_rewrite.c>
RewriteEngine On
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}]
</IfModule>
Не добавляйте в новый .htaccess старые настройки PHP, например mod_php5, mbstring.func_overload или allow_call_time_pass_reference. Эти параметры относятся к устаревшим версиям PHP.
На Nginx правила ЧПУ задают в конфигурации сервера. Маршруты должны передаваться в bitrix/urlrewrite.php в соответствии с конфигурацией установленной версии Битрикс.
Drupal
Для Drupal используйте .htaccess, который поставляется с установленной версией CMS. Не переносите конфигурацию от старой версии Drupal.
Старые правила с mod_php5, magic_quotes и register_globals использовать не нужно.
На Nginx .htaccess не обрабатывается. Для ЧПУ и обработки запросов нужна отдельная конфигурация Nginx.
OpenCart
Для Apache может использоваться правило перенаправления запросов в index.php:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Конкретные правила зависят от версии OpenCart и используемого SEO-модуля.
На Nginx .htaccess не работает. Правила ЧПУ задают в конфигурации Nginx.
MODX
Для Apache базовая маршрутизация MODX может выглядеть так:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Для точной настройки используйте файл конфигурации из установленной версии MODX. На Nginx правила задают отдельно в конфигурации веб-сервера.
PrestaShop
PrestaShop может автоматически создавать и обновлять .htaccess при изменении настроек ЧПУ, URL и некоторых параметров магазина.
Не заменяйте автоматически созданный файл универсальной конфигурацией из интернета. Если сайт работает на Nginx, .htaccess не используется, а необходимые правила задают в конфигурации Nginx.
Moodle
В новых версиях Moodle структура веб-каталога отличается от старых версий. Начиная с Moodle 5.1, веб-сервер должен использовать каталог public как корень сайта.
Старые настройки .htaccess с magic_quotes_gpc, magic_quotes_runtime и другими устаревшими параметрами PHP использовать не нужно.
Для Apache в актуальных версиях Moodle применяется маршрутизация через r.php, например:
FallbackResource /r.php
Для Nginx используется отдельная конфигурация. Базовый вариант маршрутизации:
location / {
try_files $uri /r.php;
}
Перед установкой Moodle проверьте требования к PHP для конкретной версии. Например, Moodle 5.1 требует PHP 8.2 или более новой версии из поддерживаемого диапазона.
Если вашей CMS нет в списке
Не используйте случайный .htaccess из сторонней статьи. Сначала проверьте:
- какую CMS и ее версию использует сайт,
- какой веб-сервер установлен: Apache или Nginx,
- есть ли готовый файл
.htaccess в дистрибутиве CMS, - какие требования к PHP и веб-серверу указаны для этой версии,
- нужны ли дополнительные правила для используемых модулей и расширений.
Если сайт работает на Nginx, ищите инструкцию именно для Nginx. Файл .htaccess на таком сервере не заменяет конфигурацию веб-сервера.
Что делать, если после изменения .htaccess сайт не работает
Если после изменения .htaccess сайт возвращает ошибку 500:
-
1
Восстановите резервную копию файла.
-
2
Проверьте синтаксис и последние внесенные изменения.
-
3
Посмотрите журнал ошибок веб-сервера.
-
4
Убедитесь, что используемые директивы поддерживаются текущей конфигурацией Apache.
-
5
Если сайт работает на Nginx, удалите попытки настройки через
.htaccessи проверьте конфигурацию Nginx.
Не добавляйте в .htaccess старые директивы PHP только для устранения ошибки. Многие параметры PHP 4/5 больше не поддерживаются современными версиями PHP.
Частые вопросы
Использует ли Nginx файл .htaccess?
Где должен находиться файл .htaccess?
Можно ли скопировать .htaccess от другой версии CMS?
Почему после изменения .htaccess появилась ошибка 500?
Почему ЧПУ не работают на Nginx?
Можно ли вручную изменить .htaccess в PrestaShop?
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊