
이것이 내 시나리오입니다.
고정 IP 1개와 서버 2개가 있습니다. 한 서버는 웹 서버이고 다른 서버는 메일 서버입니다. 내부 IP 주소에 대한 통과가 필요한 모든 포트가 설정된 하드웨어 방화벽으로 라우터가 있습니다.
사용자가 URL을 입력하는 경우http://www.domain.com그들은 그 웹사이트를 봅니다. 사용자가 웹 메일에 액세스하려는 경우 URL을 입력합니다.http://mail.domain.com하지만 아직도 봐http://www.domain.com
메일 서버의 포트 8080을 통해 액세스할 수 있도록 웹메일 도메인을 설정했으며 사용자가 URL을 입력하면http://mail.domain.com:8080그것은 문제없이 작동하지만http://mail.domain.com.
그래서 이것이 내 문제입니다.
내 httpd.conf에서 사용자가 입력할 때 리디렉션 301을 설정하고 싶습니다.http://mail.domain.com그들은 다음으로 리디렉션됩니다http://mail.domain.com:8080
나는 .htaccess를 사용하지 않고 httpd.conf에 지시어를 유지하고 싶습니다.
감사해요...
답변1
"mail.domain.com" 주소에 대한 웹 요청에 응답하는 기본 웹 서버에 가상 호스트를 만들어야 합니다. 다음을 살펴보세요.이름 기반 가상 호스트Apache 웹사이트의 문서. 리디렉션을 수행하려면 mod_rewrite 규칙도 필요합니다. 구성은 다음과 같습니다.
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mail.domain.com
RewriteEngine On
RewriteRule (.*) http://mail.domain.com:8080/\1 [R=301,L]
</VirtualHost>
답변2
이를 수행하는 방법은 최소한 두 가지가 있습니다.
2개 생성가상 호스트하나는 www.domain.com용이고 다른 하나는 mail.domain.com용이고 RedirectMatch 지시문을 두 번째 항목에 넣으세요.
당신은 또한프록시패스mail.domain.com 가상 호스트의 지시문을 사용하여 역방향 프록시처럼 작동하고 mail.domaine.com:80이 리디렉션 없이 직접 작동하도록 합니다.이와 같은 규칙을 사용하여 mail.domain.com URL에 대해서만 리디렉션하려면 이와 같이 mod_rewrite를 사용하십시오.
RewriteCond %{HTTP_HOST} ^mail.domain.com$ [NC]
RewriteRule ^(.*)http://mail.domain.com:8080/$1 [R=301]mod_rewrite를 사용하면 다음과 같은 규칙을 사용하여 역방향 프록시를 수행할 수도 있습니다(mail.domain.com은 내부 IP로 확인되어야 함).
RewriteCond %{HTTP_HOST} ^mail.domain.com$ [NC]
RewriteRule ^(.*)http://mail.domain.com:8080/$1 [피]