2016-07-06 4 views
1

나는 유지하고 싶은 하위 페이지가 2 개 밖에없고 다른 모든 하위 페이지를 홈페이지로 리디렉션하려고합니다..htaccess는 일부 페이지를 제외하고 모든 페이지를 홈페이지로 리디렉션합니다.

# this is to disable varnish caching on my server 
Header set Set-Cookie "_asomcnc=1; max-age=900; path=/;" 

RewriteEngine On 

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

# redirect index.html to root 
RewriteBase/
RewriteRule ^index\.html$/[NC,R,L] 

# remove trailing slash 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

내가 스택 오버 플로우에 여기 몇 가지 예를 시도했지만 내가 루프를 리디렉션 점점 계속, 또는 내 CSS 파일과 이미지가로드되지 않습니다 : 이것은 내 현재 htaccess로 코드입니다. 그래서이 두 개의 폴더에서 모든 파일을로드 할 말을 할 수 있습니다 :

  • /CSS는
  • /이미지

또한 내가이 개 하위 페이지 유지하려면 :

  • /subpage1을 .html
  • /subpage2.html

다른 모든 것은 홈페이지로 리디렉션되어야합니다.

답변

2

페이지를 다시 쓰지 않으려면 RewriteCond%{REQUEST_URI}과 연결하거나 규칙 체인을 단락시킬 수 있습니다.

는 처음에

RewriteRule ^css - [L] 
RewriteRule ^images - [L] 
RewriteRule ^subpage1.html$ - [L] 
RewriteRule ^subpage2.html$ - [L] 

을 이러한 규칙을 삽입, 조기 종료 그리고 그것은 이미 홈 페이지가 아닌 다음 과정

RewriteCond %{REQUEST_URI} !^/$ 
RewriteRule ^/[R,L] 

의, 홈페이지에 다른 모든 리디렉션하려면 동일하게하려면 RewriteCond

RewriteCond %{REQUEST_URI} !^/css 
RewriteCond %{REQUEST_URI} !^/images 
RewriteCond %{REQUEST_URI} !^/subpage1.html$ 
RewriteCond %{REQUEST_URI} !^/subpage2.html$ 
RewriteCond %{REQUEST_URI} !^/$ 
RewriteRule ^/[R,L] 

REQUEST_URI은 CSS가 아니고 이미지가 아닌 subpage1.html이 아니고 subpage2.html이 아니고 홈 페이지가 아닌 경우에만 홈 페이지로 리디렉션됩니다.


모든 것이 정상적으로 작동

, 당신은 R=301R을 대체 할 수 있습니다. R=301으로 테스트하지 마십시오.

+0

완벽하게 작동합니다. 도움을 청합니다. – Dreadlord

관련 문제