>

example.com 도메인이 있습니다   example.com/en-US/ 에서 영어 버전의 웹 사이트를 호스팅합니다   example.com/fr-FR/ 의 프랑스어 버전

지금까지는 기본적으로 영어 버전을 사용 했으므로 example.com 를 요청하는 모든 사람을 리디렉션합니다.   example.com/en-US/ 로   .htaccess 에서 이러한 규칙을 사용하여  파일 :

Redirect 301 /index.html http://examle.com/en/
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://example.com/$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]

따라서 브라우저에서 http://exmaple.com 을 요청하면 서버는 index.html을 요청합니다. 그리고 그것은 레즈 렛을 /en-US/ 에 촉발시킬 것입니다  디렉토리.

이제 프랑스 example.fr 를 얻었습니다  TLD-동일한 웹 공간을 가리 킵니다. 이제 브라우저 요청 http://example.fr 을 http://example.com/fr-FR/

다음 조건을 추가하려고 시도했지만 /en-US/ 를 많이 추가하는 루프가 발생합니다. 에 들어갑니다.

도움을주세요. 리디렉션 방법이 필요합니다

와이즈 비즈

hxxp://example.com -->hxxp://example.com/en-US/

hxxp://example.fr -->hxxp://example.com/fr-FR/

and all people explicitly requesting hxxp://example.com/index.html -->hxxp://example.com/en-US/ too


  • 답변 # 1

    HTTP_HOST 기반 조건에 따라이 규칙을 사용할 수 있습니다. :

    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ [NC]
    RewriteRule ^(?:index\.html)?$ /en-US/ [L,NC,R=301]
    RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.fr$ [NC]
    RewriteRule ^(?:index\.html)?$ /fr-FR/ [L,NC,R=301]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !/$
    RewriteRule ^ %{REQUEST_URI}/ [L,R=301,NE]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
    RewriteRule . %1/%2 [R=301,L,NE]
    
    

관련 자료

  • 이전 html - 한 번의 클릭으로 두 가지 기능 호출
  • 다음 java - HashSet 컬렉션을 올바르게 사용하도록 hashCode () 메 토스를 수정하는 방법