Вот пример файла .htaccess, который можно использовать для заданной конфигурации, с объяснениями каждой строки. Он охватывает основные аспекты безопасности и оптимизации URL. Важно: перед использованием скопируйте текущий .htaccess на всякий случай, и обязательно протестируйте изменения на тестовом сервере, прежде чем применять на production.

# Запрет доступа к файлам .htaccess и .htpasswd
<Files ".htaccess">
  Order Allow,Deny
  Deny from all
</Files>

<Files ".htpasswd">
  Order Allow,Deny
  Deny from all
</Files>

# Запрет доступа к директории includes (важно для безопасности!)
<Directory "includes">
  Order Deny,Allow
  Deny from all
  Allow from localhost  # Разрешить доступ только с локальной машины для отладки (опционально)
</Directory>

# Запрет доступа к файлу config.php (критически важно!)
<Files "config.php">
  Order Allow,Deny
  Deny from all
</Files>

# Перенаправление на HTTPS (если у вас есть SSL сертификат)
# RewriteEngine On
# RewriteCond %{HTTPS} off
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Включение RewriteEngine
RewriteEngine On

# Перенаправление с www на без www (или наоборот, в зависимости от ваших предпочтений)
# RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
# RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# Передача URL-параметров в index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

# Ошибка 404
ErrorDocument 404 /index.php

Объяснение:

  1. Защита .htaccess и .htpasswd: Предотвращает прямой доступ к этим файлам, что может содержать важную конфигурационную информацию и пароли.
  2. Защита директории includes: Запрещает доступ к директории, содержащей важные файлы, которые не должны быть доступны напрямую извне. Allow from localhost можно добавить, если вам нужно отлаживать файлы в этой директории локально. Удалите эту строку, если не используете.
  3. Защита config.php: Самый важный пункт! Предотвращает прямой доступ к файлу с конфиденциальными данными. Это абсолютно необходимо!
  4. Перенаправление на HTTPS: Если у вас установлен SSL-сертификат, раскомментируйте эти строки, чтобы автоматически перенаправлять пользователей с HTTP на HTTPS.
  5. Перенаправление с www на без www (или наоборот): Раскомментируйте эти строки, если вы хотите принудительно перенаправить пользователей на версию сайта с www или без. Выбор зависит от ваших SEO-предпочтений.
  6. Передача URL-параметров в index.php: Это основа «clean URLs» (чистые URL). Позволяет вам использовать URL-адреса типа example.com/about вместо example.com/index.php?page=about. index.php будет получать параметры через $REQUEST_URI.
  7. Обработка ошибок 404: Направляет ошибки 404 на index.php, что может быть полезно для отображения пользовательской страницы ошибки. (Рассмотрите возможность создания специализированной страницы 404).

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

  • Тестирование: Крайне важно протестировать этот файл .htaccess на тестовом сервере, прежде чем применять его к вашему продуктивному сайту. Неправильная конфигурация может привести к недоступности вашего сайта.
  • Права доступа: Убедитесь, что у веб-сервера есть права на чтение файла .htaccess.
  • Allow from localhost: Удалите эту строку, если вам не нужно отлаживать файлы в директории includes локально.
  • Резервное копирование: Всегда делайте резервную копию существующего файла .htaccess перед внесением изменений.
  • Конфигурация сервера: Убедитесь, что ваш сервер поддерживает все директивы .htaccess.

Этот файл .htaccess является отправной точкой. Вам может потребоваться настроить его в соответствии с вашими конкретными потребностями и конфигурацией сервера.

От alex

Обучаемый.