Есть ли какие-либо проблемы с безопасностью или эксплуатацией, если у меня нет файла.htaccess в корневом каталоге drupal?
Я понимаю, что наличие файла .htaccess в корне моей установки, вероятно, является способом запуска программы, но у меня возникли некоторые трудности с доступом к сайту, а затем я устранил проблему, удалив файл.htaccess в корне. Но затем это заставило меня задуматься, было ли хорошей идеей оставить мою установку Drupal 7 вообще без файла.htaccess в корневом каталоге.
Есть ли какие-либо проблемы с безопасностью или эксплуатацией, если у меня нет.htaccess файл в корне drupal? Я предполагаю, что мне пришлось бы вернуть его обратно, чтобы включить чистые URL-адреса.
2 answers
У вас могут возникнуть некоторые проблемы, в зависимости от того, как настроен Apache.
Пользователи могут напрямую просматривать некоторые скрытые файлы. Посмотрите на строки 6 и 73 в файле.htaccess, чтобы увидеть, что он ограничивает.
Пользователи могут иметь возможность просматривать каталоги напрямую. См. строку 10.
Сайт может работать неправильно, если вы случайно разместили файл с именем index.html в корне. Строка 20 делает index.php основной файл.
Чистые URL-адреса не будут работать. Мне не 100% конечно, если кэш изображений тоже будет.
Возможно, есть некоторые проблемы с безопасностью PHP, но директивы php_flag
являются стандартными настройками в php.ini уже несколько лет.
Вы находитесь на общем хостинге? Если это так, проблема с .htaccess может заключаться в строках Options
. Некоторые хосты ограничивают их. Все остальное должно быть проверено с помощью директив <IfModule>
.
Можно не иметь .htaccess в корневом каталоге документа, поместив содержимое в конфигурацию Apache для сайта, или в приложении. На сайтах большого объема это дает некоторый прирост производительности (.htaccess считывается при каждом запросе, где конфигурация Apache считывается один раз при запуске).
Добавляя к тому, что сказал MPD, я думаю, что в файле .htacess, предоставленном Drupal, есть еще две важные части:
-
Кэширование файлов Drupal сообщает браузеру, какие файлы должны быть кэшированы и как долго.
# Requires mod_expires to be enabled. <IfModule mod_expires.c> # Enable expirations. ExpiresActive On # Cache all files for 2 weeks after access (A). ExpiresDefault A1209600 <FilesMatch \.php$> # Do not allow PHP scripts to be cached unless they explicitly send cache # headers themselves. Otherwise all scripts would have to overwrite the # headers set by mod_expires if they want another caching behavior. This may # fail if an error occurs early in the bootstrap process, and it may cause # problems if a non-Drupal PHP file is installed in a subdirectory. ExpiresActive Off </FilesMatch> </IfModule>
-
Обслуживание сжатых файлов JavaScript и CSS
Drupal способен возвращать в браузер сжатые файлы.# Rules to correctly serve gzip compressed CSS and JS files. # Requires both mod_rewrite and mod_headers to be enabled. <IfModule mod_headers.c> # Serve gzip compressed CSS files if they exist and the client accepts gzip. RewriteCond %{HTTP:Accept-encoding} gzip RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteRule ^(.*)\.css $1\.css\.gz [QSA] # Serve gzip compressed JS files if they exist and the client accepts gzip. RewriteCond %{HTTP:Accept-encoding} gzip RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteRule ^(.*)\.js $1\.js\.gz [QSA] # Serve correct content types, and prevent mod_deflate double gzip. RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1] RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1] <FilesMatch "(\.js\.gz|\.css\.gz)$"> # Serve correct encoding type. Header set Content-Encoding gzip # Force proxies to cache gzipped & non-gzipped css/js files separately. Header append Vary Accept-Encoding </FilesMatch> </IfModule>
Эти директивы не защищают от проблем безопасности, но они повышают производительность Интернета сайт.
Вы можете поместить эти директивы в файл конфигурации, считываемый с http.conf, если у вас есть доступ к этим файлам.
Вообще говоря, удаление файла .htaccess из корневого каталога Drupal не является хорошей идеей, за исключением случаев, когда вы можете переместить эту директиву в другой файл.