私のドメインのルートは正常にサブディレクトリにリダイレクトされます、つまりexample.com
はexample.com/abc
にリダイレクトされます。
example.com
にはWordPressがインストールされていません。
example.com/abc
には独自のWordPressインストールがあります。
http://example.com/abc
のホームページはHTTPSではありませんし、そうしたくないのですが、すべてのサブページをHTTPSにしたいのです(例:https://example.com/abc/xyz
またはhttps://example.com/abc/thistoo
)。
私の現在の.htaccess
ファイルは標準のWordPressのものです...
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /abc/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /abc/index.php [L]
</IfModule>
# END WordPress
私はここで見つけた他の多くの解決策をチェックしてみましたが、これまでのところ喜びはありません。
pS私は.htaccess
ファイルにこのような変更を加えた後にパーマリンクを再保存することを知っています。
おそらくあなたの.htaccess
ファイルは/abc
サブディレクトリにありますか?この場合、ホームページを除くすべてのサブページでHTTPSを強制するには、次のようにします。
これはあなたの.htaccess
ファイルの一番上に行く必要があります:
RewriteCond %{HTTPS} !on
RewriteRule !^(index\.php)?$ https://example.com%{REQUEST_URI} [R=302,L]
これは、SSL証明書がアプリケーションサーバーに直接インストールされていることを前提としています。
否定RewriteRule
パターン!^(index\.php)?$
は空でない(またはindex.php
ではない)のみ一致します)URLパスなので、これはホームページを除外します。
キャッシュの問題を回避するために、302
(一時的)を301
(永続的)に変更して問題ないことが確認できた場合にのみ変更してください。テストする前にブラウザのキャッシュをクリアしてください。
さておき:
RewriteBase /abc/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /abc/index.php [L]
RewriteBase
ディレクティブを設定したので、RewriteRule
置換からディレクトリ接頭辞を削除できます(これがRewriteBase
ディレクティブの動作です)
RewriteRule . index.php [L]
ただし、.htaccess
ファイルは/abc
サブディレクトリにあるため、実際にはRewriteBase
ディレクティブやdirectory-prefixは必要ありません。