2014-02-05 61 views
0

,以阻止訪問文件,我已經像子頁如何通過URL

mypage.com/subpage 

不過,這只是別名,所有文件都在/data/subpage。並且僅在需要的文件被用戶訪問自己的index.php和所有其他文件由指數本身的進口,根據屬性(GET,會議等)

我想這一點:

  • 讓用戶去訪問index.php使用/subpage但不/data/subpage
  • 不要讓用戶在/data/subpage及其子文件夾直接訪問任何
  • 仍然讓index.php訪問這些文件。

我希望我可以理解地寫出來。

謝謝您的幫助

編輯:我現在的.htaccess(位於根)

RewriteEngine On 

RewriteRule ^subpage$ /data/subpage/index.php [L] 
RewriteRule ^subpage/(?:([^/]+)/?|)(?:([^/]+)/?|)$ /data/subpage/index.php?section=$1&subsection=$2 [L] 
RewriteRule ^edit/subpage/?(?:([^/]+)/?|)(?:([^/]+)/?|)$ /data/subpage/index.php?edit=true&section=$1&subsection=$2 [L] 
+0

當然,它的編輯 – Gomi

回答

1

嘗試:

RewriteCond %{THE_REQUEST} \ /+data/subpage/ 
RewriteRule^- [L,R=404] 

,這樣的結果/data/subpage/任何直接請求在404.你可以用F代替R=404如果你願意它res超過「403」。


編輯:

它有點吧,謝謝。作爲查看者,我無法訪問這些文件,但我的頁面無法訪問它(例如圖像)。有什麼辦法可以做到嗎?

這不是你訪問這些文件,這是你的告訴瀏覽器訪問這些頁面。這意味着你要知道該頁面告訴瀏覽器訪問它們的唯一方法是檢查引用者。不幸的是,引用者可以被輕易僞造,因此這並不能保證人們無法獲得所有文件。

RewriteCond %{THE_REQUEST} \ /+data/subpage/ 
RewriteCond %{HTTP_REFERER} !^http://yourdomain.com/subpage/(index\.php)? 
RewriteRule^- [L,R=404] 
+0

這是有點不錯,謝謝。作爲查看者,我無法訪問這些文件,但我的頁面無法訪問它(例如圖像)。有什麼辦法可以做到嗎? – Gomi

+1

@Gomi請注意,它不是您訪問這些文件的**網頁**,而是您客戶的瀏覽器。這只是說你的頁面正在告訴瀏覽器加載它。 –

+0

是的,你說得對,我沒有正確地思考。我剛剛修改了它 - 我添加了我真正不想訪問的文件擴展名(例如,XML文件)。 非常感謝 – Gomi