Apache2 + Rails + Phusion Passenger를 사용하여 'www' 하위 도메인을 강제로 적용하려면 어떻게 해야 합니까?

StackOverflow https://stackoverflow.com/questions/1896321

문제

내 고객은 301 리디렉션을 사용하여 사이트에 'www' 하위 도메인을 강제 적용하려고 합니다.따라서 'example.com/something'은 'www.example.com/somthing' 등으로 해석됩니다.

내가 하려는 것은 단순히 이것을 내 vhost 파일에 추가하는 것입니다:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost     
  ServerName  example.com
  ServerAlias www.*
  DocumentRoot /data/apps/example.com/current/public
  RailsBaseURI / 

  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^example\.com
  RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,R=301]
</VirtualHost>

또한 다음을 통해 모드 재작성이 활성화되었는지 확인했습니다.

sudo a2enmod rewrite
sudo /etc/init.d/apache2 force-reload

현재 나의 노력의 결과는 기본적으로 성공적인 것 같습니다.Apache가 다시 시작되고 재작성이 발생하지 않는 것을 제외하고 모든 것이 예상대로 작동합니다.따라서 'www.example.com'과 'example.com'이 모두 해결됩니다.브라우저가 'www.example.com'으로 리디렉션되어야 하는데도 리디렉션되지 않습니다.어떤 아이디어가 있나요?구성을 다시 로드하고 Apache를 여러 번 다시 시작해 보았지만 다시 쓰기 규칙이 작동하지 않는 것 같습니다..htaccess 파일 대신 vhost에 여기에 배치하여 잘못된 위치에 설정하고 있습니까?

여기에 어떤 조언이라도 도움이 될 것입니다.나는 완전히 당황했다.

도움이 되었습니까?

해결책

기본 VirtualHost 항목 아래에 다음을 입력하세요.

<VirtualHost *:80>
    ServerName example.com
    RedirectMatch permanent ^/(.*) http://www.example.com/$1
</VirtualHost>

기본 VirtualHost에는 ServerName www.example.com 항목이 있어야 하며 별칭이나 리디렉션이 없어야 합니다.또한 이 리디렉션에는 mod_rewrite가 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top