0

これらのルールを使用して、.htaccess を介してすべての Web サイトを https に切り替えることができました。

RewriteCond %{HTTPS} off [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app.php [QSA,L]

次のような POST URL を使用する一部のサードパーティ サービスがあるため、問題が発生しました。

http://sub.mydomain.com/agreg/sms/service

リダイレクトされ、現在は GET であるため、拒否されます。

^/agreg/スキームを使用するすべての URL で、この「強制 https」を無効にしたいと思います。私は試した

RewriteCond %{HTTPS} off [NC]
RewriteCond %{REQUEST_URI} !^/agreg
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]

しかし、現在はhttp://sub.mydomain.com/app.phpにリダイレクトされています

ここで何を見逃したのですか?

助けてくれてどうもありがとう!

4

1 に答える 1

2

質問:

^/agreg/ スキームを使用するすべての URL で、この「強制 https」を無効にしたいと思います。私は試した

RewriteCond %{HTTPS} off [NC]
RewriteCond %{REQUEST_URI} !^/agreg
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]

しかし、現在はリダイレクトされています http://sub.mydomain.com/app.php


まあ、それは規則に従って有効な結果です。

すべてを にリダイレクトする 2 番目のルールがありますapp.php。これです:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app.php [QSA,L]

たとえば、着信 URLhttp://sub.mydomain.com/agreg/sms/serviceSoは 1 番目のルールから除外されますが、2 番目のルールで書き換えられます。

解決:

agreg予想される動作が、両方のルールから文字列を保持する URL を除外することであると仮定すると、次のようになります。

RewriteCond %{HTTPS} off [NC]
RewriteCond %{REQUEST_URI} !/agreg        [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/agreg        [NC]
RewriteRule ^(.*)$ /app.php [QSA,L]

書き換え条件は、次のルールに対してのみ有効です。最後のルール ブロックに同じ NOT 条件を追加する必要があります。

于 2013-03-17T22:39:30.887 に答える