2011-03-29 1 views
27

사이트에 약간의 트릭을해야합니다! 아이디어는 다음과 같습니다..htaccess url-file이 존재하지 않으면 재 작성

  • 필수 URL에 대한 파일이 존재하면 그 URL로 이동하여 더 이상 아무것도하지 않습니다.
  • 필요한 URL을위한 파일이 없으면 file.php로 가서 뭔가를해야하지만 URL을 변경하면 안됩니다!

예 :

www.mysite.com/page1.htm -> 존재 -> Page1.htm 파일을

www.mysite.com/page2.htm 파일로 이동 -> NOT 존재 - > 파일 default.php로 이동하지만 URL은 "www.mysite.com/page2.htm"

.htaccess로이 모든 작업을 수행 할 수 있습니까?

+1

또한 [의미있는 사용자 이름] (http://tinyurl.com/so-hints)을 제공하십시오. 이것에 대한 한 가지 장점은 다른 사람들이 [답장] (http://meta.stackexchange.com/questions/43019/how-do-comment-replies-work)을 사용하여 자신의 의견을 말하면서 누군가가 의견에서 당신을 언급했다는 알림. – outis

+0

제안 사항은 Thx입니다. 나는 항상이 사이트에 있지 않습니다. 내 실수를 바로 잡을 게요 :) – Kiavor

답변

60
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ /default.php [L] 
5

404 오류 규칙을 구현하십시오.

ErrorDocument 404 /default.php 
+0

'http : // example.com/app.php/some/resource'처럼 PHP에 대한 휴식 스타일 호출을 엉망으로 만들지 않고 HTML5 대체를 사용하고 싶다면 이것도 좋습니다. –

+0

나는 실제로 이것으로 전환했고 더 잘 작동했습니다! –

+0

이것은 원하는 것이 아닐 수도 있습니다. 이렇게하면 HTTP 404 상태 (파일을 찾을 수 없음) 헤더가 브라우저 (및 Google)로 전송됩니다. 유용한 '파일을 찾을 수 없음'페이지에서만 사용하십시오. –

8

그것은 여기에 언급되지 않지만 FallbackResource하지-발견 (404)의 URL을 처리 의 새로운 권장되는 방법입니다 : mod_rewrite를 필요로하지 않습니다. 예 : 아파치 설명서에서

FallbackResource /not-404.php 

이 당신의 파일 시스템에 아무것도에 매핑되지 않는 URL 핸들러를 설정하고, 그렇지 않으면 HTTP 404을 반환

사용 (찾을 수 없음).

+0

중요한 점은, 이렇게하면 'http : // example.com/app.php/some/resource'과 같이 일부 서버 측 REST 스타일 URL이 손상 될 수 있다는 것입니다. –

+0

그건 맞지 않아. 'FallbackResource'의 행동은'ErrorDocument'와 같습니다. 'PATH_INFO'가 활성화되면'/ app.php/some/resource'는 완벽하게 작동하고 Apache에서 테스트했습니다. – anubhava

+0

어디에서 PATH_INFO를 사용할 수 있습니까? –