2012-06-30 2 views
1

문제는 첫 번째 URL이 작동하고 두 번째 URL이 작동하지 않는다는 것입니다.후행 슬래시 제거 및 html 리디렉션

http://www.example.com/podcast/episode1
http://www.example.com/podcast/episode1/

비 후행 슬래시 버전으로 모든 후행 슬래시 버전을 리디렉션하는 방법이 있나요?

example.com/podcast
example.com/podcast/

만이 하나가 작동합니다 :이 작품의도 이후

이 문제는 여기에 더 악화입니다

example.com /podcast.html

및 html 확장자 표시를 원하지 않습니다.

여기 내 htaccess로 파일에 내가 가진 코드는 지금까지의 :

#shtml 

AddType text/html .html 
AddHandler server-parsed .html 

#html 

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 

#index redirect 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/ 
RewriteRule ^index\.html$ http://example.com/ [R=301,L] 

#non www to www 

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

당신이 나를 도울 수 있습니까?

+0

또한 html 버전을 비 -HTML 버전으로 리디렉션하려고합니다. 예를 들어 http://www.pavlinaplus.com/podcast/reality.html을 http://www.pavlinaplus.com/podcast/reality로 리디렉션하려고합니다. – Jeremy

답변

4

후행 슬래시를 쉽게 제거 할 수 있습니다. .html을 제거하는 것은 아닙니다. 당신이 거기에 슬래시가 표시되는 경우 슬래시

그냥 R = (301)을 제거

리디렉션합니다. 이 요청을 계속 처리 할 이후

RewriteRule ^(.*)/$ $1 [R=301]

L 플래그를 추가하지 마십시오. 또한 첫 번째 규칙으로 삼으십시오. 당신이 .html

문제를 제거 할 수 없습니다 왜

page가 (내부 리디렉션을 통해) page.html을하게되면, page.html에 대한 새로운 요청이 서버로 주어진 것입니다. 그러면 .htaccess는 page.html에 대한 요청을보고 page으로 리디렉션합니다. 큐 무한 루프.

  1. 당신은 한 번만 슬래시를 제거하여 .htaccess
  2. 당신은 www는 코드의 상단에 리디렉션하고 L 플래그를 제거 추가해야
  3. (참조 의 상단에 RewriteEngine On 필요 코드 최적화)
+0

안녕 스콧, 도와 줘서 고마워. 코드는 부분적으로 작동하고 부분적으로는 작동하지 않습니다. 어떤 일이 일어나는지 알아 보려면 [후행 슬래시 버전] (http://www.pavlinaplus.com/newsletter/checklist/)을 방문하십시오 ([비 후행 슬래시 버전] (http://www.pavlinaplus.com/newsletter/checklist) 여전히 작동합니다).어떤 길로 인해 긴 경로를 택할 수 있습니까? – Jeremy

+0

나는 지적 된대로 코드를 최적화했습니다. – Jeremy

+0

URL의 _home/theev8/public_html/_ 부분을 제거하려면 어떻게합니까? – Jeremy

관련 문제