2017-10-12 71 views
1

我有以下結構:隱藏於公衆的目錄訪問,但允許通過重寫規則

public_html/ 
    hidden_directory/ 
    sub_folder/ 
     sample_file.txt 
     other_file.txt 
    another_folder/ 
     another_file.txt 

我的最終目標,只有通過重定向到有hidden_directory可見的內容。我第一次嘗試將它們放在public_html之外是不成功的。然後我嘗試你在上面看到的結構,其重定向像

RewriteRule ^sub/(.*) hidden_directory/sub_folder/$1 [L] 

訪問過:

http://mysite/sub/sample_file.txt 

這偉大的工作給我,我從文件位置和URL我想想要的內容。但我不喜歡這樣的文件也可從以下

​​

我做一個

deny from all 
hidden_directory

,並已停止直接訪問像我想要的,但它也打破了重寫。

是否有任何htaccess解決方案,我可以將這些文件放在不能直接訪問的文件夾中,但仍然可以通過重寫進行訪問?

回答

1

是否有任何htaccess解決方案,我可以讓這些文件在一個文件夾中不可直接訪問,但仍然可以重寫?

是使用基於THE_REQUEST變量規則來阻止到hidden_directory直接訪問:

RewriteEngine On 

# block direct access to a given path 
RewriteCond %{THE_REQUEST} \s/+hidden_directory[/?\s] [NC] 
RewriteRule^- [F] 

RewriteRule ^sub/(.*)$ hidden_directory/sub_folder/$1 [L,NC] 

THE_REQUEST變量代表從您的瀏覽器Apache接收到原始請求,它的一些執行後不會被覆蓋重寫規則。此變量的示例值爲GET /index.php?id=123 HTTP/1.1

+1

這樣做了!謝謝! –

相關問題