web-dev-qa-db-ja.com

RewriteEngine .htaccessルールは、example.net / https:/example.netにリダイレクトされます

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}

これはおそらく、リダイレクトディレクティブにLLast)フラグがないためです。次のようになります。

RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

(また、substitutionで後方参照を使用していない場合は、pattern(.*)をキャプチャする必要はありません。)

Lフラグがない場合、ファイル全体で処理が続行され、後で書き換えによってキャッチされる可能性があります。ただし、前のディレクティブはすでに3xxステータスを設定しているため、URLを再度書き換えてリダイレクトします。

.comドメインと.netドメインを切り替えたため、あなたの例では何かが失われたと思いますが?書き換えの最初の条件からTLDが欠落しており、/myfolder-publicが誤ったリダイレクトでどこに行ったのですか?

1
MrWhite