2011-12-03 2 views
0

나는 장고로 구동되는 웹 사이트를 갖고 있으며, "표준 호스트 이름"문제를 해결하려고하고있다. www.example.com을 example.com으로 리디렉션하려고합니다. Apache documentation here에있는 두 가지 기법을 시도했습니다 (정식 호스트 이름으로 스크롤).파이어 폭스에서만 표준 호스트 이름을 리다이렉트 할 때 더블 슬래시 받기

나는 현재 mod_rewrite는 방법을 시도하고, 나는 가상 호스트 컨테이너이 있습니다

RewriteEngine on 
    RewriteCond %{HTTP_HOST} !^example\.com$ [NC] 
    RewriteCond %{HTTP_HOST} !^$ 
    RewriteRule ^/?(.*)$ http://example.com/$1 [L,R=301,NE] 

이 하나의 경우를 제외하고, 나를 위해 작동합니다. Firefox에서만 브라우저에 www.example.com을 입력하면 리디렉션되고 URL 표시 줄에 example.com//이 표시됩니다 (후행 슬래시 2 개가 있음).

그러나 다음과 같이 올바르게 작동합니다. www.example.com/news/example.com/news/으로 리디렉션됩니다.

Firefox의 루트 URL에만 표시됩니다. 그것은 크롬, IE9, 오페라 (어쩌면 그 브라우저는 더블 슬래시 먹는거야?)에서 Windows에서 잘 작동하는 것 같습니다. 내 Mac을 사용하는 Mac에서 Safari가 정상적으로 작동하지만 Firefox에서도 문제가 발생한다고합니다.

장고 설정에 관한 한 기본값 인 APPEND_SLASH=True을 사용하고 있습니다. Django와 관련이 있는지는 모르겠지만 정적 HTML 사이트에서 위와 같은 mod_rewrite 규칙을 시도해 보았습니다. 항상 작동하는 것처럼 보입니다.

답변

0

이것은 마술처럼 멈추었 기 때문에 어느 시점에서는 Firefox에 문제가 있다고 가정 할 것입니다.

1

봅니다 괄호로를 바꾸어 "/"를 무시하기 때문에, 그것은 여기 여부의 처리 여부, 마지막 부분이 작동한다 (이것은하지 $ (1) 더 이상하지만, 리디렉션 URL에서 $ 2) :

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^example\.com$ [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteRule ^(/?)(.*)$ http://example.com/$2 [L,R=301,NE] 

작동하는지 알려주십시오.

관련 문제