2010-11-18 6 views
3

.htaccess의 기본 사항을 알고 있지만 mod_rewrite에 관해서는 전문가가 아닌 것을 자유롭게 인정합니다..htaccess를 사용하여 SQLite 파일을 직접 다운로드 할 수 없도록합니다.

문제 : 문서 루트에 data.sqlite이라는 sqlite db 파일이 있습니다 (아니요, 여기에서 이동할 수 없습니다). 이 파일은 PHP 파일에 의해 내부적으로 액세스되지만 사용자가 db URL을 브라우저에 직접 입력하여이 파일을 '다운로드'하지 못하도록하고 싶습니다.

이전에는 .htaccess를 사용하여 예쁜 URL을 만들었고 mod_rewrite를 사용하여 내 문제를 해결할 수 있다고 생각했습니다. 그러나 내 재 작성 규칙은 액세스를 방해하지 않는 것 같습니다.

htaccess로

Options +FollowSymLinks 
Options -multiviews 

RewriteEngine On 
RewriteBase/


RewriteCond %{http_host} ^www\.example\.com [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,NC] 

##prevent access to any file data.sqlite by redirecing back to index.php 
RewriteRule ^data.sqlite$ index.php [L,NC] 

##my other rules follow - not shown here 

나는 재 작성과 잘못된거야 어떤 아이디어가? 나는 그것이 단순한 것이라고 확신합니까?

편집 :

이상적으로, 나는 단지 data.sqlite

+0

당신이 왜 거기 밖으로 옮길 수 없는지 다시 생각해야합니다 ... – Thilo

+0

@Thilo - 문서 루트 외부에있는 것이 훨씬 안전하다는 것에 전적으로 동의합니다. 사용 가능한 옵션이라면 그렇게 할 것입니다. –

답변

1

아파치는 기본적으로 .로 시작하는 파일에 대한 액세스를 비활성화 .sqlite로 끝나는 모든 파일에 직접 URL 액세스를 방지하고 싶습니다 . 파일 이름을 .data.sqlite으로 변경하면 처리됩니다. 나는 또한 그것을 수행했기 때문에 여기

+1

파일의 이름을 바꿀 수 있다면 문서 루트에서 파일을 옮길 수도 있습니다. – Thilo

+0

@ 이그나시아 - 흥미로운 옵션입니다. –

1

는 당신이 그것을 할 방법은 다음과 같습니다. "시작"에 대해

RewriteCond %{HTTP_REFERER} !^http://*.webwarecollection.com/.*$  [NC] 
RewriteCond %{HTTP_REFERER} !^http://*.webwarecollection.com$  [NC] 
RewriteRule .*\.(sqlite)$ - [F,NC] 
0

을 그건 사실이 아니야. 파일은 ".ht"에서 시작하여 appache에서 기본적으로 차단되어야합니다.

관련 문제