web-dev-qa-db-ja.com

Wordpress用のHtaccessを単一のサブドメインに設定

状況

  • 私はOVH(VPSではない)で標準的なホスティングをしていて、それにたくさんのウェブサイトを異なるサブディレクトリに置くことができます。
  • 私は2つのWordpressのインスタンスをインストールしたいと思います - 最初にディレクトリ/Aに、ディレクトリ/Bに移動します
  • "A"でdomain.comを使い、 "B"でsubdomain.domain.comを使いたいのですが

質問

  • その場合、各Wordpressディレクトリの単一ドメインでWordpressの標準の.htaccess設定を使用する必要がありますか、それとも各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のサブディレクトリ版を使うべきでしょうか。

SubFolder

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]
2
user3799089

私の提案は次のとおりです。各Wordpressディレクトリの単一ドメインでWordpressに同じ標準の.htaccess設定を使用します。

<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. 標準のCODEを使用することは、どこでも同じであるため、保守とデバッグが簡単になるので推奨されます。

  2. 余分な2行は主にSEOにお勧めです。それらがなければ、あなたのドメインの一つは他のドメインを使ってアクセス可能かもしれません。それはいくつかの重複した内容の質問を提起するかもしれません。

2
Fayaz