Настройка .htaccess для WordPress на поддомене и основном домене
Ситуация
- У меня стандартный хостинг в OVH (не VPS), и я могу разместить несколько сайтов в разных поддиректориях,
- Я хочу установить 2 экземпляра WordPress - первый в директории
/A
, а второй в директории/B
- Хочу, чтобы "A" использовал
domain.com
, а "B" использовалsubdomain.domain.com
Вопрос
- В этом случае мне нужно использовать стандартную конфигурацию
.htaccess
для WordPress на одном домене в каждой директории WordPress или специальную конфигурацию для поддомена в каждой директории 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>
Поддомен
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# добавить слеш в конце для /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
- или, может быть, мне следует использовать версию .httaccess для поддиректории?
Поддиректория
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# добавить слеш в конце для /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Моё предложение: используйте стандартную конфигурацию .htaccess
для WordPress на одном домене в каждой директории 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>
Вместе с этим добавьте небольшой код, чтобы убедиться, что пользователи перенаправляются на правильный домен, если они попадают в эту поддиректорию через другой домен:
RewriteCond %{HTTP_HOST} !^domain\.com$
RewriteRule ^(.*)$ "https://domain.com/$1" [R=301,L]
После этого ваш .htaccess
для domain.com
будет выглядеть так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^domain\.com$
RewriteRule ^(.*)$ "https://domain.com/$1" [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
А для subdomain.domain.com
он будет таким:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^subdomain\.domain\.com$
RewriteRule ^(.*)$ "https://subdomain.domain.com/$1" [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Причины:
Использование стандартного кода рекомендуется, потому что его легче поддерживать и отлаживать, так как он везде одинаковый.
Две дополнительные строки рекомендуются в основном для
SEO
. Без них один из ваших доменов может быть доступен через другой домен. Это может вызвать вопросы по поводу дублирования контента.
