2016-10-19 3 views
1

나는 내가 더 www가 모든 URL을 리디렉션 모든 시간에서 URL의 끝에 슬래시를 추가하려고 노력하고 내 htaccess로 파일www가없는 리디렉션에 후행 슬래시를 추가 하시겠습니까?

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^www.mysite.com [NC] 
RewriteCond %{REQUEST_URI} !\.[^./]+$ 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ mysite.com/$1/ [R=301,L] 

에 다음 있습니다.

www가없는 상태에서 직접 시도한 경우 작동하지만 실패한 경우 www가 실패한 경우 제거하고 후행 슬래시를 추가하지 않습니다.

답변

1

HTTP_HOST해야 www를 제거하고 후행 슬래시 추가 할 수있는 하나의 규칙입니다 :

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www\. [NC,OR] 
RewriteCond %{REQUEST_URI} !/$ 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule ^(.*?)/?$ http://%1/$1/ [R=301,L,NE] 

이것은 또한 규칙에 도메인 이름을 하드 코딩 피할 수는.

+1

이것은 가장 효과가 있었고, 고마워요! –

1

이 두 가지 규칙을 사용하여 항상 적용 할 수 있습니다. 또한 첫 번째 조건에서는 구문 오류가 있습니다. 그것은 여기에 있지 REQUEST_URI

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

RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://example.com/$1/ [R=301,L] 
+0

감사합니다.하지만 www가 표시된 사이트를 방문한 경우에도 www가로드되고 제거되지 않습니다. –

+0

@CodingGuru 뒤에 슬래시가 있거나 없습니까? –

+0

마지막에 슬래시가 있습니다. –

관련 문제