2013-04-23 91 views
0

建立在這個問題上:.htaccess redirect if folder name in url我想知道如何在CakePHP應用程序的webroot的.htaccess中應用那裏認爲的.htaccess規則。 而不會生成服務器錯誤或缺少CakePHP重寫功能。.htaccess重定向如果CakePHP的URL中的文件夾名稱

我的CakePHP的版本是1.2.10和Webroot公司的的.htaccess如下:

#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音樂文件的子文件夾的音頻文件夾該應用程序使用播放它們。我希望有人試圖直接訪問mp3文件或從外部網站訪問一個mp3文件重定向到另一個頁面,但保持能夠從我的網站頁面播放該文件。因此,假設如下:

http://mycake.com/audio/folderX/fileY.mp3 我想http://mycake.com/audio/ *任何訪問重定向到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 

當有人試圖訪問通過任何MP3文件,例如,http://mycake.com/audio/folderX/fileY.mp3。將會產生一個401錯誤。

但是,我注意到FDM能夠訪問和下載此文件。重定向僅適用於Web瀏覽器。

1

htaccess文件的規則的順序是非常重要的,如果規則和條件適用於同一請求。如果請求URL由不同的規則處理,您可以按任何順序放置規則。

在你的情況,你在這裏有真正的文件in the other question和不存在的文件和目錄,在這個問題上

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

這意味着,你可以前或CakePHP的規則之後插入其他規則。