マルチサイトには.htaccess
ファイルを使用する必要がありますか?私は基本的なワードプレスサイトをセットアップし、Apache2 VirtualHostを使って次のように設定しました。
<VirtualHost *:80>
...
RewriteEngine On
Options FollowSymLinks
# THIS REDIRECTS TO HTTPS
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
DocumentRoot /var/www/example/
<Directory /var/www/example/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:443>
...
DocumentRoot /var/www/example/
<Directory /var/www/example/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLEngine on
Include /etc/letsencrypt/options-ssl-Apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
しかし、マルチサイトを有効にする手順に従うと、wordpressからこれらのオプションを.htaccess
ファイルに貼り付けるように求められます。
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]
しかし、私は.htaccess
ファイルを持っていません。しかし、それをしてApacheを設定した場合、書き換え規則は機能しません。 example.com/wp-admin
は、末尾にスラッシュを付けてwp-admin/
に書き換えられるのではなく、醜い長いリンクhttps://example.com/wp-login.php?redirect_to=https%3A%2F%2Fexample.com%2Fwp-admin%2F&reauth=1
に書き換えられます。これはSSLの書き換え規則によるものでしょうか。私の質問は:私は.htaccess
が必要ですか?そしてどのように私はその書き換え規則を機能させるのですか?
例えば
wpinstance.com/wp-admin
は、末尾にスラッシュを付けてwp-admin/
に書き換えるのではなく、見にくく長いリンクに書き換えます:https://wpinstance.com/wp-login.php?redirect_to=https%3A%2F%2Fwpinstance.com%2Fwp-admin%2F&reauth=1
コメントで既に述べたように、これは意図的なものです。このための "かわいい" URLはありません。そしてどちらもそうである必要はありません - これは索引を付けられるべきでもリンクされるべきでもありません。
.htaccess
が必要ですか?
いいえ、.htaccess
は「必要ありません」。
サーバーの設定にアクセスできる場合は、これらのディレクティブを<Directory /var/www/wpinstance/>
コンテナー内(<VirtualHost *:443>
コンテナー内)にそのまま貼り付けることができます。
しかし、これらのディレクティブを<VirtualHost>
コンテナの中に直接貼り付けるには、mod_rewriteは server コンテキストでは( directory または.htaccess
コンテキストとは異なる)動作が異なるため、いくつかの変更が必要です。
サーバ設定を変更するたびに、Apacheを再起動する必要があります。 .htaccess
ファイルを変更したときにApacheを再起動する必要はありません。
私はMultiViews
を無効にすることも検討します。すなわち。 MultiViews
ディレクティブからOptions
を削除します。 (MultiViewはmod_rewriteと衝突する可能性があります - あなたがしていることによって異なります。)
.htaccess
ファイルを使用しない場合は、それらを無効にする必要があります。
AllowOverride None
更新:
私はApache/2.4.18を使っています
Order
およびAllow
ディレクティブはApache 2.4では推奨されておらず、将来のバージョンでは削除される予定です。次の(Apache 2.2以前の)ディレクティブを変更する必要があります。
Order allow,deny Allow from all
読むために:
Require all granted
apache 2.4以降