Htaccess для Wordpess, установленного на одном поддомене


Ситуация

  • У меня стандартный хостинг в OVH (не VPS), и я могу разместить на нем множество веб-сайтов в разных подкаталогах,
  • Я хотел бы установить 2 экземпляра Wordpress - сначала в каталог /A и затем в каталог /B
  • Я хотел бы, чтобы "А" использовало domain.com и "Б" использовало 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]

# add a trailing slash to /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]

# add a trailing slash to /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]
Author: user3799089, 2017-02-03

1 answers

Мое предложение таково: используйте одну и ту же стандартную конфигурацию .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
Author: Fayaz, 2017-02-03 13:13:49