web-dev-qa-db-ja.com

htaccessはいくつかのURLを除いてHTTPSにリダイレクトします

私はhtaccessリダイレクトに関するものは初めてですが、特別な方法でやりたいと思っています。推奨される方法がわからないので、これがまだ可能かどうかわかりません。

私の.htaccessファイルにこれがあります:

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]

これで、すべてのURLがHTTPSバージョンにリダイレクトされます-これは問題なく、必要です。しかし、今はいくつかの例外があります。

たとえば、これらのURLはHTTPSではなくHTTPである必要があります。

http://www.mywebsite.com/another/url/which/has/to/be/http
http://www.mywebsite.com/and_again?var=a

Htaccessでこれを解決することは可能ですか?可能であれば、参照リンクを送信するか、これを行う方法を説明できます。

編集

私は今このコードを持っています:

RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^ https://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} off 
RewriteCond %{THE_REQUEST} !\s/+(/commerce_Paypal/*)\s [NC] 
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

目標はevery(!)のURLがHTTPSにリダイレクトされることです。ただし、先頭にcommerce_Paypalが含まれるURLは除きます。

例えば:

mydomain.com/commerce_Paypal  <- http
mydomain.com/commerce_Paypal/smth/else <- http
mydomain.com/what/ever <- https
14
TJR

RewriteCondを使用して、http->httpルールに例外を追加できます。

RewriteEngine On

RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^ https://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]

# force https:// for all except some selected URLs    
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !/commerce_Paypal/ [NC]
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

# force http:// for selected URLs
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} /commerce_Paypal/ [NC]
RewriteRule ^ http://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

リファレンス: Apache mod_rewriteはじめに

Apache mod_rewrite技術詳細

26
anubhava
RewriteCond %{THE_REQUEST} !/commerce_Paypal/ [NC]

私のために働いた。私は運が悪かった多くの同様の条件の書き換えを試みました。

0
Ray