web-dev-qa-db-ja.com

httpからhttpsへのApacheリダイレクト

環境ApacheによるCentos

Httpからhttpsへの自動リダイレクトを設定しようとしています

From manage.mydomain.com --- To ---> https://manage.mydomain.com 

私は私のhttpd.confに以下を追加しようとしましたが、うまくいきませんでした

 RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_Host}/$1 [NC,R,L]

何か案は?

133
Deano

私は実際にこの例に従った、そしてそれは私のために働いた:)

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   DocumentRoot /usr/local/Apache2/htdocs 
   Redirect permanent / https://mysite.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName mysite.example.com
  DocumentRoot /usr/local/Apache2/htdocs
  SSLEngine On
 # etc...
</VirtualHost>

それから:

/etc/init.d/httpd restart

192
Deano
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI}

http://www.sslshopper.com/Apache-redirect-http-to-https.html

または

http://www.cyberciti.biz/tips/howto-Apache-force-https-secure-connections.html

111
IdemeNaHavaj

Apache redirect http to httpsを検索し、ここに上陸しました。これは私がubuntuでやったことです:

1)モジュールを有効にする

Sudo a2enmod rewrite
Sudo a2enmod ssl

2)あなたのサイト設定を編集する

ファイルを編集

/etc/Apache2/sites-available/000-default.conf

内容は次のとおりです。

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    <path to your crt file>
    SSLCertificateKeyFile   <path to your private key file>

    # Rest of your site config
    # ...
</VirtualHost>
  • SSLモジュールには証明書が必要です。既存のものを指定するか(購入した場合)、 自己署名証明書を生成する 自分で作成する必要があります。

3)Apache2を再起動します

Sudo service Apache2 restart
84
Jossef Harush

実際には、あなたのトピックは https://serverfault.com/ に属していますが、それでもこれらをチェックしてみることができますディレクティブ

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_Host}/$1
11
5ervant

Mod_rewriteを使用することは、仮想ホストを使用してリダイレクトすることをお勧めしません。

もしあなたがmod_rewriteを使ってやろうとしているなら:

RewriteEngine On
# This will enable the Rewrite capabilities

RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same 
location but using HTTPS.
# i.e.  http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in
# httpd.conf or .htaccess context

参照: Httpd Wiki - RewriteHTTPToHTTPS

301 Permanent Redirectを探しているなら、redirectフラグは

 R=301

rewriteRuleは次のようになります。

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
8
Vincy

サーバーのバージョン:Apache/2.4.29(Ubuntu)

Web上で、そしてApacheの公式文書で長い間検索した後、私のために働いた唯一の解決策は/ usr/share/doc/Apache2/README.Debian.gzから来ました

To enable SSL, type (as user root):

    a2ensite default-ssl
    a2enmod ssl

/etc/Apache2/sites-available/000-default.confファイルに、

"/" " https://sub.domain.com/ "をリダイレクトする

<VirtualHost *:80>

    #ServerName www.example.com
    DocumentRoot /var/www/owncloud
    Redirect "/" "https://sub.domain.com/"

それでおしまい。


P.S:あなたが抽出せずにマニュアルを読みたい場合:

gunzip -cd /usr/share/doc/Apache2/README.Debian.gz
5
DimiDak

Apache2.4をお持ちの場合は000-default.confをチェックしてください - DocumentRootを削除して追加

Redirect permanent / https://[your-domain]/
4
indifference

これは私のために働いた:

RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [QSA,L,R=301]
3
Fint

このコードは私には役に立ちます。

# ----------port 80----------
RewriteEngine on
# redirect http non-www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# redirect http www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
# ----------port 443----------
RewriteEngine on
# redirect https non-www to https www
RewriteCond %{SERVER_NAME} !^www\.(.*)$ [NC]
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
2
user7817632

Apache Virtualhosting設定でこれを試してから、Apacheサービスをリロードしてください。

RewriteEngine On

RewriteCond %{HTTPS} off


RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI}
1
MD IRFAN