Вопрос или проблема
Есть ли какой-либо негативный эффект, если я добавлю следующее правило переписывания в свою установку WordPress?
Я использую Apache Web Server и WordPress 6.6.2.
Примечание: что
RewriteCond %{REQUEST_FILENAME} !-d
отсутствует в правиле.
Мое намерение: вернуть 404 для всех запросов, не ищущих существующий файл. Таким образом, также отрицая доступ к директориям. Я не хочу, чтобы общественность подглядывала в структуру директорий.
Моя обеспокоенность: в том, что это правило, которое также отказывает в доступе к директориям, может потенциально нарушить функциональность или использование WordPress.
# /wordpress/.htaccess
<IfModule mod_rewrite.c>
# вернуть 404 для всех запросов, не ищущих существующий файл
RewriteCond %{REQUEST_URI} ^/wordpress/(wp-content|wp-includes)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ - [R=404,L]
</IfModule>
Нет, это не должно оказать негативного эффекта – но это также и ненужно, если хостинг настроен правильно. Вызов несуществующих URL должен всегда приводить к 404. Директории могут быть исключением, если для них не отключена DirectoryListing на хостинге – тогда вы могли бы увидеть список всех файлов в директории при их вызове. Вам следует это проверить и при необходимости скорректировать.
Если вы используете Apache Web Server, то посмотрите в httpd.conf
или config.ini
, затем измените Options Indexes
на Options -Indexes
Options -Indexes
#
# Возможные значения для директивы Options: "None", "All",
# или любое сочетание:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# FollowSymLinks является настройкой по умолчанию.
#
# Директива Options является как сложной, так и важной. Пожалуйста, смотрите
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# для получения дополнительной информации.
#
Ответ или решение
Отказ доступа к директориям в результате случайного применения неправильного правила переписывания на вашем сайте под управлением WordPress может иметь ряд негативных последствий. Важно рассмотреть все аспекты, связанные с потенциальным воздействием на функциональность и удобство использования вашего сайта.
Уменьшение функциональности сайта
При добавлении правила переписывания, как в вашем примере:
<IfModule mod_rewrite.c>
# вернуть 404 для всех запросов, не связанных с существующими файлами
RewriteCond %{REQUEST_URI} ^/wordpress/(wp-content|wp-includes)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ - [R=404,L]
</IfModule>
вы фактически блокируете доступ к директориям wp-content
и wp-includes
, если в них не находятся физически существующие файлы. Это может негативно повлиять на загрузку ресурсов, таких как JavaScript, CSS и изображения, необходимые для корректного отображения вашего сайта и его функциональности. В результате пользователи могут столкнуться с проблемами визуализации или даже с поломками функциональных элементов.
Проблемы с обновлениями и расширениями
Многие плагины и темы WordPress подразумевают, что они будут иметь доступ к определённым директориям для обновления, загрузки и хранения данных. Если доступ к директорам, содержащим такие ресурсы, будет заблокирован, это может привести к тому, что плагины не смогут корректно загружать необходимые библиотеки или данные, что приведет к ошибкам, сбоям или неработоспособности функций.
Распространение ошибок 404
Хотя ваша цель — предотвращение доступа к директориям и возврат 404 для несуществующих файлов, это может создать дополнительные сложности для пользователей и поисковых систем. Не все запросы, которые не соответствуют существующим файлам, являются ошибочными. Например, некоторые плагины могут генерировать динамические URL-адреса, которые могут не иметь физического представления на сервере, но всё же должны быть доступны для корректной работы.
Плохая оценка в поисковых системах
Чрезмерный возврат ошибок 404 может негативно сказаться на SEO-оценке вашего сайта. Поисковые роботы могут неправильно интерпретировать блокировку доступа и относят ваш сайт к ресурсам с плохой качеством контента. Это может привести к падению позиций в поисковых системах и, как следствие, уменьшению трафика.
Рекомендации по настройке
Если ваша основная цель состоит в том, чтобы ограничить доступ к директориям для предотвращения просмотра структуры файлов, вы можете рассмотреть более безопасные методы, такие как:
-
Деактивация индексации директорий: Убедитесь, что у вас установлено значение
Options -Indexes
в конфигурационном файле Apache (httpd.conf
илиconfig.ini
). Это уже предотвратит вывод списка файлов в директории, что минимизирует риски.Options -Indexes
-
Организация .htaccess: Перепишите ваше правило, добавляя условия, которые позволят доступ к определённым файлам и директориям, необходимым для работы WordPress. Используйте условия для различных путей, чтобы избежать нежелательных блокировок.
-
Тестирование после внесения изменений: Всегда проверяйте измененные настройки, чтобы убедиться, что функциональность сайта не нарушена.
Заключение
Случайный отказ в доступе к директориям может спровоцировать множество проблем, начиная от функциональных сбоев и заканчивая ухудшением SEO. Правильная настройка сервера и использование продуманных правил переписывания помогут вам достичь желаемого результата без ухудшения пользовательского опыта или негативного влияния на ваш сайт.