Два файла ".htaccess" в разных директориях – это нормально?
Я обнаружил два файла ".htaccess": один расположен в '/httpdocs/.htaccess', другой — в '/httpdocs/wordpress/.htaccess'. Их содержимое различается. Это нормально?
WordPress был установлен в директорию '/wordpress/', и с тех пор не перемещался. Однако когда пользователи заходят на мой сайт, в URL отображается "http://www.mydomain.com" без упоминания 'wordpress'.
Также в Настройки > Общие указано:
Адрес WordPress (URL): http://www.mydomain.com/wordpress
Адрес сайта (URL): http://www.mydomain.com

Как правило, Apache использует наиболее специфичный файл .htaccess для запрашиваемого ресурса. Это означает, что для доступа к файлам в /httpdocs/wordpress/
будет использоваться /httpdocs/wordpress/.htaccess
. Доступ к /httpdocs/foo/
будет использовать /httpdocs/foo/.htaccess
, а если его нет, то будет использоваться /httpdocs/.htaccess
.
Если корневая директория вашего сайта указывает на /httpdocs/wordpress/
, то пользователи будут видеть http://www.example.com
как директорию WordPress. Кроме того, если ваш /httpdocs/.htaccess
включает правила перезаписи, чтобы скрыть wordpress
в имени папки, произойдет то же самое.

Это содержимое файла "wordpress/.htaccess", используется только плагином BetterWPSecurity:
# BEGIN Better WP Security
# Begin HackRepair.com Blacklist
RewriteEngine on
#Блокировка спамеров в комментариях, вредоносных ботов и некоторых прокси
RewriteCond %{REMOTE_HOST} 12.226.240.248 [OR]
RewriteCond %{REMOTE_HOST} 24.111.102.26 [OR]
RewriteCond %{REMOTE_HOST} 24.117.121.113 [OR]
RewriteCond %{REMOTE_HOST} 65.30.216.140 [OR]
RewriteCond %{REMOTE_HOST} 67.87.64.23 [OR]
RewriteCond %{REMOTE_HOST} 68.12.149.198 [OR]
RewriteCond %{REMOTE_HOST} 69.139.167.203 [OR]
...

Это содержимое файла "/.htaccess":
BEGIN WordPress
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
END WordPress

Похоже, что некоторые плагины используют "wordpress/.htaccess", но "/.htaccess" также работает. Как вы думаете, безопасно ли продолжать работать в таком режиме? Спасибо.

Как упомянул lacqui в своем ответе, Apache будет получать все необходимые данные из всех созданных вами файлов .htaccess, но более специфичные правила переопределяют те, что находятся ближе к корневому каталогу. Это означает, что вы можете распределить свои правила по нескольким файлам. Или даже короче: Да, можно оставить всё как есть.

Похоже, что у вас WordPress установлен в поддиректории. Подробное объяснение этого можно найти в кодексе: http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory
В шаге 7 упоминается, что файл .htaccess должен быть скопирован, а не перемещен из поддиректории в корень. Так что да, наличие двух файлов .htaccess является нормальным, если вы настроили установку WordPress в поддиректории.
