
안녕하세요. 저는 제 웹사이트가 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
그냥 교체하세요
# 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요청
그런 다음 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]
답변2
%{SERVER_ADDR}
IP를 다시 쓰는 트릭을 수행할 수도 있습니다.
편집하다:
죄송합니다. 표현식 오른쪽에는 변수를 사용할 수 없습니다.
다음과 같이 시도해 보세요.
RewriteCond %{SERVER_NAME},%{SERVER_ADDR} ^(.*),\1
아니면 동적 방식으로 하지 않으면
RewriteCond %{SERVER_NAME} !192.168.1.1