아파치 가상호스트 설정

아파치 가상호스트 설정

안녕하세요. 저는 제 웹사이트가 https를 통해서만 접근하고 www 하위 도메인을 통해서만 접근할 수 있도록 노력하고 있습니다. 저는 현재 다음 아파치 가상 호스트 구성을 사용하고 있습니다.

<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com

# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]

RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=permanent,L]

#..
</VirtualHost>

<VirtualHost *:443>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com

# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]

RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

RewriteCond %{SERVER_NAME} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,NC,L]

<Directory /home/{apacheuser}/www>
  SSLRequireSSL
  Order allow,deny
  Allow from all
  LimitRequestBody 512000
</Directory>

#..
</VirtualHost>

정규식에 대한 내 지식이 다소 제한적이어서 이것이 이것을 달성하는 가장 좋은 방법인지 궁금합니다.

감사합니다

답변1

  1. 그냥 교체하세요

    # Redirect http requests to https
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
    
    RewriteCond %{HTTP_HOST} !=www.example.com
    RewriteRule .* https://www.example.com%{REQUEST_URI} [R=permanent,L]
    

에 의해

    # Redirect http requests to https
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !=www.example.com
    RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]

마찬가지로 모든 http 트래픽은 https로 리디렉션됩니다.http://example.com요청

  1. 그런 다음 https 구성에서 해당 줄을 제거하십시오.

    # Redirect http requests to https
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
    
    RewriteCond %{HTTP_HOST} !=www.example.com
    RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
    

그러니 그냥 계속

    RewriteCond %{SERVER_NAME} !=www.example.com
    RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,NC,L]

어느 리디렉션https://example.com에게https://www.example.com

답변2

%{SERVER_ADDR}IP를 다시 쓰는 트릭을 수행할 수도 있습니다.

편집하다:

죄송합니다. 표현식 오른쪽에는 변수를 사용할 수 없습니다.

다음과 같이 시도해 보세요.

RewriteCond %{SERVER_NAME},%{SERVER_ADDR} ^(.*),\1

아니면 동적 방식으로 하지 않으면

RewriteCond %{SERVER_NAME} !192.168.1.1

관련 정보