2013-04-23 5 views
0

이 질문에 대한 답 : .htaccess redirect if folder name in url CakePHP 앱의 웹 루트의 .htaccess 파일에서 .htaccess 규칙을 적용하는 방법을 알고 싶습니다. 은 서버 오류를 생성하거나 CakePHP 다시 쓰기 기능을 누락하지 않습니다..htaccess CakePHP의 URL에 폴더 이름이 있다면 리디렉션

내 CakePHP의 버전은 1.2.10이며, 다음과 같이 웹 루트의 htaccess로는 : 응용 프로그램이 MP3 파일의 파일과 하위 폴더의 오디오 폴더를 가지고 있기 때문에

#app/webroot/.htaccess 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 
AddType audio/mpeg mp3 

나는이 필요 응용 프로그램에서 을 사용하여 재생할 수 있습니다. 어떤 사람이 MP3 파일에 직접 액세스하거나 외부 웹 사이트에서 다른 페이지로 리디렉션하려고 할 때 이 내 웹 사이트 페이지에서 파일을 재생할 수있게하려고합니다. 그래서 다음을 가정합니다

http://mycake.com/audio/folderX/fileY.mp3 내가 규칙과 조건이 같은 요청에 적용 할 경우 규칙의 순서가 중요하다 htaccess 파일에서 http://mycake.com/mistakeSound.mp3

답변

0

오디오 폴더에 .htaccess 파일을 두는 것에 의존하는 해결책을 찾았습니다. 다음과 같이 그 htaccess로의 구문은 다음과 같아야합니다

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mycake\.com [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mycake\.com.*$ [NC] 
RewriteRule \.(gif|jpg|mp3)$ - [R=401] 
ErrorDocument 401 /e401.html 

누군가가 http://mycake.com/audio/folderX/fileY.mp3 예를 들어,를 통해 어떤 MP3 파일에 액세스하려고합니다. 401 오류가 생성됩니다.

그러나 FDM은이 파일에 액세스하여 다운로드 할 수 있습니다. 리디렉션은 웹 브라우저에서만 작동합니다.

1

로 리디렉션 http://mycake.com/audio/ *에 대한 액세스를 원한다. 요청 URL이 다른 규칙에 의해 처리되는 경우 규칙을 임의의 순서로 배치 할 수 있습니다. 귀하의 경우에는

, 당신은 전이나 CakePHP의 규칙 후 다른 규칙을 삽입 할 수 있습니다,이 질문에

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

이 의미에서 여기 in the other question 및 존재하지 않는 파일과 디렉토리를 실제 파일이 있습니다.