Два файла ".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]
...
RRN
Это содержимое файла "/.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
RRN
Похоже, что некоторые плагины используют "wordpress/.htaccess", но "/.htaccess" также работает. Как вы думаете, безопасно ли продолжать работать в таком режиме? Спасибо.
RRN
Как упомянул lacqui в своем ответе, Apache будет получать все необходимые данные из всех созданных вами файлов .htaccess, но более специфичные правила переопределяют те, что находятся ближе к корневому каталогу. Это означает, что вы можете распределить свои правила по нескольким файлам. Или даже короче: Да, можно оставить всё как есть.
Jan Beck
Похоже, что у вас WordPress установлен в поддиректории. Подробное объяснение этого можно найти в кодексе: http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory
В шаге 7 упоминается, что файл .htaccess должен быть скопирован, а не перемещен из поддиректории в корень. Так что да, наличие двух файлов .htaccess является нормальным, если вы настроили установку WordPress в поддиректории.