2016-05-18 84 views
-2

我想做這樣的任務。重定向從一個文件夾到PHP文件的所有訪問

我有一個文件夾/文檔/裏面有很多文檔文件。當用戶嘗試訪問該文件夾的內容時,我需要進行一些驗證,因此我需要將該訪問權重定向到根文件夾中的download.php文件,並將實際的REQUEST_URI傳遞給PHP文件。我嘗試這htaccess文件:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/doc.*$ [NC] 
RewriteRule ^(.*)$ http://example.com/download.php?r=%{REQUEST_URI} [L,R=301] 

但我得到ERR_TOO_MANY_REDIRECTS錯誤與重定向的URL是:?的download.php R = /的download.php,在這種情況下是不是我想要的(的download.php? r =/doc/abc/xyz.pdf是正確的)

有人能爲我解釋我做錯了什麼嗎?非常感謝你。

+0

您的重寫cond行不正確,它將繼續循環。您需要添加一個文件檢查,以便每次都不使用重寫條件。所以它只會在它指向一個不存在的文件時使用它 添加以下行RewriteCond%{REQUEST_FILENAME}!-d – Brett

回答

0

您的rewritecond行不正確,並且它會一直循環。您需要添加一個文件檢查,以便每次都不使用重寫條件。所以它只會使用它時,它的指向不存在 添加以下行

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^doc\/(.*)\.html$ download.php?r=$1 [L,R=301] 

與URL文件http://example.com/doc/file.html

將用戶重定向到的download.php?R =文件如果您想捕獲文件擴展名,請將最後一行更改爲

RewriteRule ^doc\/(.*)$ download.php?r=$1 [L,R=301] 
+0

嗨,謝謝你的回答。假設我想將http://example.com/doc/file.html重定向到http://example.com/download.php。 – kardel

+0

@kardel檢查更新的答案 – Brett

+0

謝謝,但如何重定向/ doc /文件夾內的所有url,如/ doc/star/file.pdf和/doc/biz/new/file.html? – kardel

相關問題