Вот наш текущий файл .htaccess с правилами, которые нам нужно соблюдать, но также нам нужно добавить новое правило, которое перенаправляет из корневого домена на URL-адрес вложенной папки.
example.com -> example.com/fl/en.html ..
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.nz$
RewriteCond %{REQUEST_URI} !^/subfolder [NC]
RewriteRule ^(.*)$ /subfolder/$1 [L]
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(/home.html|/info.html|/flash|/external)
RewriteRule (.*) http://example.com/fl/en.html [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress





Похоже, что ничего особенного не требуется, если вы поместите директиву в правильное место. Перенаправить корень документа (для example.com) на /fl/en.html в .htaccess можно так:
RewriteRule ^$ /fl/en.html [R,L]
Здесь просто нужно ввести после директиву, которая перезаписывает все для хоста domain.co.nz и перед вашего фронт-контроллера. (Вы можете объединить это с существующей директивой, которая перенаправляет /home.html, /info.html и т. д.)
Ваши существующие правила могут быть дополнительно оптимизированы. Вместо того, чтобы проверять запрошенный URL-путь в директиве RewriteCond и разрешать все в RewriteRuleшаблон, более эффективно сначала делать то, что вы можете, в RewriteRuleшаблон (поскольку это то, что обрабатывается в первую очередь).
Кроме того, поскольку вы используете WordPress, любые пользовательские директивы, которые вы добавляете в .htaccess, должны находиться за пределами раздела # BEGIN WordPress. Сам WordPress поддерживает этот раздел, поэтому любые сделанные вручную настройки могут быть перезаписаны во время обновления.
Также нет необходимости повторять директиву RewriteEngine. (Экземпляр последний этой директивы побеждает и управляет всем файлом.)
Итак, собрав все это вместе, мы получаем что-то вроде:
# Rewrite all requests for domain.co.nz to subfolder
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.co\.nz$
RewriteRule !^subfolder /subfolder%{REQUEST_URI} [L]
# Redirect document root to /fl/en.html
RewriteRule ^$ /fl/en.html [R,L]
# Redirect specific paths to /fl/en.html
RewriteRule ^(/home.html|/info.html|/flash|/external) /fl/en.html [R=301,L]
# 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
Обратите внимание, что указанная выше директива (с одним R) является временным (302) перенаправлением. Измените это на R=301, если это предполагается навсегда, но только после того, как вы проверите, что он работает нормально (чтобы избежать проблем с кешированием).
Как всегда, перед тестированием убедитесь, что вы очистили кеш браузера.