問題は次のとおりです。
パラメータ付きの URL から正規の URL を作成するために、URL の書き換えを実行しています。例えば:
RewriteRule ^somename/(.*)/(.*.html)$ index.php?pram1=someparam¶m2=$1¶m3=$2 [QSA,L]
ここで、ページが https プロトコルを使用しているかどうかも確認し、使用していない場合は 301 リダイレクトを行います。
問題: REQUEST_URI を使用すると、Apache が新しい (正規の URL) を認識しないようです。代わりに、REQUEST_URI は index.php?... URL を返します。
これにより、現在の (正規の URL) を取得し、HTTPS を確認し、必要に応じてリダイレクトすることができなくなります。
例えば、
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (somename)
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301]
(somename) が URI に含まれていないため、まったく機能しません ({REQUEST_URI} には元の URL が保持されていることを思い出してください)。
QUERY_STRING と照合できますが、リダイレクトにより元の URL に移動します
RewriteCond %{HTTPS} off
RewriteCond %{QUERY_STRING} (param1)
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301]
私はこれに関する解決策をインターネットで過去1時間検索してきましたが、何かを思いつくことができませんでした. 新しい (正規の) URL を保持する環境変数を作成する方法があるのではないかと考えましたが、これを行う方法を見つけることができませんでした。
役立つかもしれない提案はありますか?