2016-10-01 3 views
2

URL을 기반으로 사용자를 안내하는 PHP 코드를 일부 작성했으며 색인 페이지에 URL을 제공하는 htaccess 코드를 찾았습니다. 작업. 그러나 기술적으로 파일/폴더 란 무엇인지 밝혀 내고 있지도 않습니다..htaccess는 경로가 있어도 모든 URL을 다시 작성합니다.

website.com/somethingrandom/somethingelse으로 가면 404 오류가 표시되는 반면 website.com/cache/private으로가는 것은 금지라고 표시됩니다.

이미지, CSS 및 JS 파일과 같은 일부 파일 유형을 제외하고 파일이 존재하지 않는 것처럼 편집하려면 어떻게해야합니까?

RewriteBase/
RewriteEngine On 
# If the request is not for a valid file 
RewriteCond %{REQUEST_FILENAME} !-d 
# If the request is not for a valid directory 
RewriteCond %{REQUEST_FILENAME} !-f 
# This rule converts your flat link to a query 
RewriteRule ^(.*)$ index.php?_page_location=$1 [L,NC,NE] 
+0

왜 당신은 그 -d 디렉토리 존재 여부를 확인하는거야? – mario

+0

흠, 좋아, 고마워, 그 절반 작동, 난 단지 파일에 그것을 밖으로 테스트 거라고. '-d'와'-f' 비트를 지우는 것은 여전히 ​​파일에 금지되어 있다고 말합니다. – Peter

+0

고마워요, 이미 저기 있습니다, 여기에 파일이 있습니다. (모든 것을 먼저 연결하는 것에 대해 미안합니다) - http://pastebin.com/drhSkL0Z – Peter

답변

1

이 같은 규칙을 가지고 :

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteRule ^index\.php$ - [L,NC] 

# add trailing slash to directories 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301,NE] 

# If the request is not for known file types 
RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|php|bmp|png|ico|tiff|css|js)$ [NC] 
# This rule converts your flat link to a query 
RewriteRule .* index.php?_page_location=$0 [L,QSA] 
+1

감사합니다. 내가 일을 끝내고 나면 확인해야 할 것이다. 그러나 나는 그것이 내가 무엇인지 알 수있다. :) – Peter

+0

흠, 거의 작동하지만 폴더 링크를 따라갈 때 약간의 문제가있다. 고칠 수 있습니다. 어떤 파일에서도 발생하지 않지만'website.com/folder1/folder2'로 가면 URL을'website.com/folder1/folder2? _page_location = folder1/folder2'로 변경합니다. – Peter

+0

또한 중요하지 않으므로 모르는 경우 걱정하지 마세요. 특정 파일을 허용하거나 거부하려면 해당 파일 형식을 어떻게 재정의해야합니까? – Peter

1

당신이 즉, 일부 파일이나 디렉토리를 표시를 숨기려면 같은 당신은 R|redirect 플래그

RewriteRule ^cache/private - [R=404,L] 
로 리디렉션 수도, 존재하지 않는하지 : 그것은 현재의 약자로 여기

코드입니다

이것은 클라이언트에게 cache/private (404)과 같은 파일이 없음을 알립니다. 비록 이것이 에 대한 모든 고객, 심지어 자신을 조심.

이 제한을 적용하려면 규칙 앞에 약간 RewriteCond을 붙이거나 If 또는 그와 유사한 조건문으로 감싸 야합니다.


모든 파일을 숨기려면

은 웹 사이트의 모든 URL에 대한 "찾을 수 없음"을 반환합니다

RewriteRule^- [R=404,L] 

이처럼 "넓은"정규 표현식을 사용합니다. 또한 개인

  • 캐시 아래 모든 것을 숨길이

    RewriteRule ^(?:cache/private|secrets|database) - [R=404,L] 
    

    /에 같은 URL을 세트를 제공 할 수 있습니다

  • 비밀
  • 데이터베이스

Apache - Regular Expressions를 참조 자신의 패턴을 맞춤 설정하는 방법에 대한 자세한 내용은 http://www.regular-expressions.info/을 참조하십시오.

+0

모든 파일에 대해 '담요'로 사용할 수있는 무언가를 선호합니다. 그러나 그 파일이 필요한 경우에 유용합니다. – Peter

관련 문제