Apache .htaccess
について学び始めていますが、Webサイトにいくつかの問題があります...
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
RewriteCond %{HTTP_Host} ^example$ [NC,OR]
RewriteCond %{HTTP_Host} ^www.example.net$
RewriteCond %{REQUEST_URI} !myfolder-public/
RewriteRule (.*) /myfolder-public/$1 [L]
2番目のRewriteRule
は、ドメインをリダイレクトするために別のフォルダー(myfolder-public
と呼ばれる)が必要なため存在しますが、これをWebブラウザーに配置すると:example.com
HTTPSなしでページがリダイレクトされます:example.net/https:/example.net
と私はそれを修正する方法がわからない、助けて?
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
これはおそらく、リダイレクトディレクティブにL
(Last
)フラグがないためです。次のようになります。
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
(また、substitutionで後方参照を使用していない場合は、pattern(.*)
をキャプチャする必要はありません。)
L
フラグがない場合、ファイル全体で処理が続行され、後で書き換えによってキャッチされる可能性があります。ただし、前のディレクティブはすでに3xxステータスを設定しているため、URLを再度書き換えてリダイレクトします。
.com
ドメインと.net
ドメインを切り替えたため、あなたの例では何かが失われたと思いますが?書き換えの最初の条件からTLDが欠落しており、/myfolder-public
が誤ったリダイレクトでどこに行ったのですか?