example.com
www에서 www가 아닌 www에서 www로의 리디렉션을 구현하려고 합니다 www.example.com
.
내 거sites-available/example.com.conf
파일은 다음과 같습니다.
<VirtualHost *:80 *:443>
ServerName www.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/www/example.com/logs/error.log
CustomLog /var/www/example.com/logs/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
Redirect permanent / http://www.example.com
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
Redirect permanent / https://www.example.com
</VirtualHost>
내 거sites-available/000-default.conf
파일은 다음과 같습니다.
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/default/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
이제 ..요청하면 http://www.example.com
요청대로 응답합니다. 그러나 요청되면 http://example.com
의 구성을 사용하여 요청을 렌더링합니다 000-default.conf
.
000-default.conf
연결을 해제하면 sites-enabled/
문제가 해결되지만 제가 원하는 것은 아닙니다(알 수 없는 요청에 대한 기본 동작을 유지하고 싶습니다).
여기서 문제가 무엇입니까? 구성이 000-default.conf
리디렉션을 재정의하는 이유는 무엇입니까?
답변1
domain.com 가상 호스트는 www.example.com
이름으로만 지정되므로 Apache는성냥지정되었을 때 www
.
ServerName www.example.com
대신 다음 구성을 사용할 수 있습니다.
ServerName example.com
ServerAlias www.example.com
편집하다:내 생각에는 귀하의 경우 Apache가 다음과 유사한 순서로 가상 호스트를 일치시키려고 시도할 것입니다.
www.example.com > default > example.com (80) > example.com (443)
호스트는 포트 80에서 전송된 모든 요청과 일치 하므로 default
다른 두 요청은 테스트되지 않습니다. 이는 기본값을 제거하면 구성이 제대로 작동하는 이유도 설명합니다.
나는 Apache의 가상 호스트 일치에 대해 잘 알지 못하지만 이에 대한 자세한 정보는 다음에서 찾을 수 있습니다.이 페이지.