http - https apache yönlendirmesi


157

Apache ile Çevre Centos

Http'den https'ye otomatik yönlendirme ayarlamaya çalışılıyor

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

Aşağıdaki httpd.conf eklemeyi denedim ama işe yaramadı

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

Herhangi bir fikir?

Yanıtlar:


210

Aslında bu örneği takip ettim ve benim için çalıştı :)

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   Redirect permanent / https://mysite.example.com/
</VirtualHost>

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

Sonra şunları yapın:

/etc/init.d/httpd restart


7
Bunun yalnızca VirtualHost dosyasına erişiminiz varsa kullanılabilir olduğunu unutmayın. Tavsiye edilen yöntemdir.
Foochow

4
Httpd.conf üzerinde bunu değiştirdikten sonra apache web sunucusunu yeniden başlatın. böylece tarayıcınızın önbelleğini de yansıtacak ve temizleyecektir.
Suriyan Suresh

2
Bu yöntemin Ubuntu 12.4 ile benim için çalışmadığını, ancak önerilen RewriteEngine cevabının hile yaptığını bildirmek istiyorum.
Deano

2
yeniden başlatma yapmak zorunda mısın? yeniden yükleme çok daha az yıkıcıdır ve yeni yapılandırma dosyasını getirir. /etc/init.d/httpd reload|| service httpd reload
Rebecca Dessonville

3
Amaç onu ssl moduna yönlendirmek olduğu için, hatta DocumentRoot /usr/local/apache2/htdocsartık ihtiyaç
duyulmuyor

130
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

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

veya

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


3
Bu, onaylanandan daha iyi bir çözümdür, çünkü Pound veya BigIP gibi bir SSL yükleyicinin arkasında olsanız bile çalışır. Bu yükleyici genellikle tüm trafiği aynı bağlantı noktasına
geçirir

1
@spiritoo Öyle değil. Apache belgeleri özellikle bunun mod_rewrite kullanmamanız ve Redirect'i kullanmanız gereken durumlardan biri olduğunu söylüyor: httpd.apache.org/docs/2.4/rewrite/avoid.html
Luke Madhanga

4
@LukeMadhanga Performans için Redirect kullanan Apache docrecommands. Ancak yine de, daha genel anlamda RewriteEngine çözümü daha iyidir, çünkü tarif ettiğim durumda bile (boşaltma) çalışır. Yorumumun amacı, her kullanıcıya iki cevap arasında seçim yapabileceği anahtarı sağlamaktır. Bazı insanlar genel prosedürler (büyük birlikler) ister, diğerleri performans ister ... bu ücretsiz bir seçimdir.
spiritoo

20
Bununla birlikte, bu harikadır, daha büyük yapmak istiyorsanız, bunu [R = 302, L, QSA] ekleyin, böylece tüm parametreler de güvenli sayfaya geçirilir. Şöyle görünmelidir:% {REQUEST_URI} [R = 302, L, QSA]
Svetoslav Marinov

Bu satırları kullandım ve sayfa yüklemeye çalıştığınızda yanıt "Kaynak yüklenemedi: net :: ERR_CONNECTION_REFUSED". Neyi yanlış yapıyorum?
Serkan

98

Arandı apache redirect http to httpsve burada indi. Ubuntu'da yaptığım şey bu:

1) Modülleri etkinleştir

sudo a2enmod rewrite
sudo a2enmod ssl

2) Site yapılandırmanızı düzenleyin

Dosyayı düzenle

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

İçerik şu şekilde olmalıdır:

<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>

3) apache2'yi yeniden başlatın

sudo service apache2 restart

Ubuntu 16.04 ve Apache2 ile çalışın. Teşekkürler!
Sylvester Yao


11

Mod_rewrite kullanmak, sanal ana bilgisayar ve yönlendirme kullanmak için önerilen yol değildir.

Bu durumda, mod_rewrite komutunu kullanmaya eğilimliyseniz:

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

Başvuru: Httpd Wiki - Yeniden YazHTHTToHTTPS

301 Kalıcı Yönlendirme arıyorsanız, yönlendirme bayrağı şu şekilde olmalıdır:

 R=301

böylece RewriteRule şöyle olacak,

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

6

Apache2.4 kontrolünüz varsa 000-default.conf- kaldırın DocumentRootve ekleyin

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

5

Sunucu sürümü: Apache / 2.4.29 (Ubuntu)

Web'de uzun süre arama yaptıktan ve apache'nin resmi dokümantasyonunda, benim için çalışan tek çözüm /usr/share/doc/apache2/README.Debian.gz adresinden geldi.

To enable SSL, type (as user root):

    a2ensite default-ssl
    a2enmod ssl

/Etc/apache2/sites-available/000-default.conf dosyasına

Yönlendirme "/" " https://sub.domain.com/ "

<VirtualHost *:80>

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

Bu kadar.


Not: Kılavuzu çıkarmadan okumak istiyorsanız:

gunzip -cd /usr/share/doc/apache2/README.Debian.gz

3

Bu benim için çalıştı:

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

3

Bu kod benim için çalışıyor.

# ----------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

Lütfen bunu apache Virtualhosting yapılandırmasında deneyin ve ardından apache servisini yeniden yükleyin

RewriteEngine On

RewriteCond %{HTTPS} off


RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

-1

Tüm httptrafiği sunucumdaki varsayılan apache ana sayfasından bir tanesine yönlendirmek kadar basit bir şey için buna ihtiyacım vardı https.

Apache'yi yapılandırmaya gelince hala oldukça yeşil olduğum için, mod_rewritedoğrudan kullanmaktan kaçınmayı tercih ederim ve bunun yerine daha basit bir şey için gittim:

<VirtualHost *:80>
  <Location "/">
     Redirect permanent "https://%{HTTP_HOST}%{REQUEST_URI}"
  </Location>
</VirtualHost>

<VirtualHost *:443>
  DocumentRoot "/var/www/html"
  SSLEngine on
  ...
</VirtualHost>

Apache değişkenlerini kullanmama izin verdiğim için bunu beğendim ve bu şekilde, sadece ilişkili bir etki alanı adı olmayan bir IP adresi olduğu için gerçek ana bilgisayar adını belirtmem gerekmedi.

Referanslar: https://stackoverflow.com/a/40291044/2089675

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.