1

次の形式で、Apacheに特定のURLにHTTPSを使用させるようにします。

https://www.example.com/signup/*

それで

次のURLの例のいずれかに直接アクセスすると、ApacheはそのURLをHTTPSの同等のサイトに転送します。

例えば

http://www.example.com/signup  -->  https://www.example.com/signup
http://www.example.com/signup/basic+plan  -->  https://www.example.com/signup/basic+plan
http://www.example.com/signup/premium  -->  https://www.example.com/signup/premium 

誰もが方法を知っていますか?

前もって感謝します

4

7 に答える 7

5

ムラトさん、ありがとう

あなたのものはほとんど機能しましたが、正確に機能させる方法を見つけました。

機能するのは次のとおりです。

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} ^/somefolder/?
RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L]

www.domain.com rewriterule に somefolder を含めていないことに注意してください。

于 2008-11-03T15:07:00.750 に答える
4

これは私が使用したものだと思います:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} ^/somefolder/?
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L]

ここから)

于 2008-11-03T04:19:44.723 に答える
3

Redirectディレクティブを使用できます。

Redirect 301 /signup https://www.example.com/signup

これにより、URLの/signupに続くものが自動的に保持されます。このディレクティブは、SSL以外のサイトでのみ構成してください。そうしないと、再帰ループに陥る可能性があります。

于 2008-11-03T03:37:40.597 に答える
1

mod_rewriteのドキュメントをご覧ください。

于 2008-11-03T03:35:22.160 に答える
1

以下を使用して、Web サイトのチェックアウト セクションで SSL を要求しました。

<Directory "/var/www/html">
        RewriteEngine on
        Options +FollowSymLinks
        Order allow,deny
        Allow from all
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule \.(gif|jpg|jpeg|jpe|png|css|js)$ - [S=1]
        RewriteRule ^checkout(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</Directory>

たとえば、 http://www.example.com/checkout をクリックすると、 https ://www.example.com/checkoutにリダイレクトされます

このルールは、混合コンテンツの警告が表示されないように、通常はページ内に含まれるファイル拡張子をスキップします。必要に応じて、このリストに追加してください。

複数のページが必要な場合は、RewriteRule を次のように変更します。

RewriteRule ^(checkout|login)(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

もちろん、ディレクトリはサーバー上の実際のパスと一致する必要があります。このページは、特定のニーズに関する詳細情報にも役立つ場合があります: http://www.whoopis.com/howtos/apache-rewrite.html

Plesk 8.6 を実行する Web サイトでこれを使用していますが、それは問題ではありません。これは私の vhost.conf ファイルにあります。これは、httpd.conf ファイルに入れるようなものです。.htaccess ファイルで使用するために何かを調整する必要があるかどうかはわかりませんが、それは疑わしいです。conf ファイルに追加する場合は、apache を再起動して構成をリロードすることを忘れないでください。

あなたが私のようで、特定のページでのみ SSL を使用したい場合は、残りのページを通常の http に戻す書き換えルールも必要です。逆効果には以下を使用できます。

RewriteCond %{SERVER_PORT} ^443$
RewriteRule \.(gif|jpg|jpeg|jpe|png|css|js)$ - [S=1]
RewriteRule !^(checkout|login)(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [L,R]

私のように Plesk を使用している場合、非 SSL トラフィックはすべて vhost.conf ファイルを使用しますが、SSL トラフィックはすべて vhost_ssl.conf ファイルを使用することに注意してください。つまり、SSL を要求する最初の書き換えルールは vhost.conf ファイルに記述しますが、強制的に非 SSL に戻す 2 番目のルールは vhost_ssl ファイルに記述する必要があります。httpd.conf または .htaccess を使用している場合は、両方を同じ場所に配置できると思います。

このチュートリアルもブログに投稿しました: Apache rewrite rules to force secure/non-secure pages .

于 2009-03-28T17:39:14.157 に答える
0

あなたはmod_rewriteでこれを行うことができます-

RewriteCond%{SERVER_PORT}!^ 443 $

RewriteRule ^ / signup https://example.com/signup

RewriteRule ^ / signup /(。*)$ https://example.com/signup/ $ 1

私はそれをテストしていませんが、動作するはずです。

- 編集 -

訂正、私は自分のサーバーの1つでこれを試しましたが、問題なく動作します。mod_rewrite構成を再確認することをお勧めします。また、.htaccessを使用している場合は、そのディレクトリでオーバーライドが許可されていることを確認する必要があります。

ちなみに、これはSSLトラフィックがポート443を経由していることを前提としています。そうでない場合は、それに応じて書き換え条件を調整する必要があります。

于 2008-11-03T03:55:19.033 に答える