Настройка .htaccess для WordPress на поддомене и основном домене

3 февр. 2017 г., 12:29:04
Просмотры: 16.9K
Голосов: 6

Ситуация

  • У меня стандартный хостинг в 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]
0
Все ответы на вопрос 1
1

Моё предложение: используйте стандартную конфигурацию .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>

Причины:

  1. Использование стандартного кода рекомендуется, потому что его легче поддерживать и отлаживать, так как он везде одинаковый.

  2. Две дополнительные строки рекомендуются в основном для SEO. Без них один из ваших доменов может быть доступен через другой домен. Это может вызвать вопросы по поводу дублирования контента.

3 февр. 2017 г. 15:13:49
Комментарии

Звучит разумно :)

DDos Schwagins DDos Schwagins
3 февр. 2017 г. 15:16:57