14

まず、wwwを削除したいと思います。私のドメイン名から

http://www.example.com => http://example.com

また、特定のディレクトリを安全 (https) にし、残りは http のままにしたいと考えています。

http://example.com/login => https://example.com/login

明らかに、誰かが次のように入力した場合など、すべての条件で機能する必要があります。

http://www.example.com/login => https://example.com/login

また、ユーザーがログイン ページから移動すると、http に戻ります。現在 .htaccess には、私が使用しているソフトウェアによって自動的に行われる次のものがあります。動作させるには、そこにある必要があると思います。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* ./index.php

これらすべてを夢でコントロールする方法についてのアイデアはありますか?

前もって感謝します!

===================

@Gumboあなたのアドバイスに従って、これは私の完全な.htaccessです

RewriteEngine On


# remove www from host
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]

# force HTTPS
RewriteCond %{HTTPS} =off
RewriteRule ^(login)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# force HTTP
RewriteCond %{HTTPS} =on
RewriteRule !^(login)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* ./index.php


Options -Indexes

http ://example/loginに移動すると、 https://example/loginに移動する必要があるときに、まだhttp://example/index.phpに移動します。順序が間違っていますか?

4

4 に答える 4

31

次のルールを試してください。

# remove www from host
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]

# force HTTPS
RewriteCond %{HTTPS} =off
RewriteRule ^(login|foo|bar|…)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# force HTTP
RewriteCond %{HTTPS} =on
RewriteRule !^(login|foo|bar|…)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

GET および HEAD リクエストでのみプロトコルを変更し、POST リクエストではプロトコルを変更しないように、いくつかの条件を追加することもできます。

于 2010-11-16T14:49:11.033 に答える
4

このコードは私のために働きます:

<IfModule mod_rewrite.c>

   RewriteEngine on

   RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
   RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

   RewriteCond %{HTTPS} !=on
   RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

</IfModule>
于 2016-09-10T08:27:34.690 に答える
0

このすべてのポスト タイム ラインを読んだ後、次のエラーで成功しました: My website(c4dprime.com) was attached https: in mozilla firefox browser. Google と Internet Explorer はドメイン アドレスを http: として表示します (firefox の実際の問題) https: によってドメインに接続された不明なリダイレクトがあるため、どのブラウザーでも自分のドメインに https: は必要ありませんでした: (このエラーの原因) 以下をインストールした後wordpress のプラグイン (ssl の簡単なリダイレクト).... wordpress に低レベルのプラグインを使用しないようにすべての人に伝えました。

ともかく!Google検索エンジンを介して、このトピックに関する多くの記事とチュートリアルを読んだ後. 今、私はこの投稿のヒントからこの問題を解決したと言ってうれしいです. 私がこのフォームとワードプレスで初めて知ったことを覚えておいてください。

このヒントは私にとって完全に役立ちます

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com$ [NC]
RewriteRule ^(.*)$ http://yoursite.com/$1 [L,R=301]

コードに続く.htaccessファイルの編集またはいくつかの変更の後、私はこのエラーを解決して現在使用しています。

AddHandler c4d-prime .com

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteBase /
RewriteRule ^$ http://www.c4dprime.com/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
于 2016-02-23T11:56:05.940 に答える
0

wwwを削除します(テスト済み):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com$ [NC]
RewriteRule ^(.*)$ http://yoursite.com/$1 [L,R=301]

リダイレクト (テストされていません):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_REQUEST} \/login/?.*\ HTTP [NC]
RewriteRule ^(.*)$ https://yoursite.com/login [L,R=301]
于 2010-11-16T14:30:58.750 に答える