2010-09-14 76 views
0

我主持一對夫婦同WordPress安裝的域,現在我想有每個站點文件夾,我需要把在那裏的一些各種文件。如何使用mod_rewrite隱藏實際目錄?

基本上我要地圖是這樣的:

 
URL      Path 
webbfarbror.se/f/*  _files/webbfarbror.se/* 
grapefrukt.com/f/*  _files/grapefrukt.com/* 

這個小片斷很好地做工作和的RewriteCond讓我啓用和禁用此在每個域的基礎。

ReWriteCond %{HTTP_HOST} webbfarbror.se 
ReWriteRule ^f/(.*)$ _files/%{HTTP_HOST}/$1 [L] 

但是,比如說,http://grapefrukt.com/f/awesome.jpg文件也可以訪問它的「真實」的URL http://grapefrukt.com/_files/grapefrukt.com/awesome.jpg

我所有的嘗試導致無限重定向來回。

如何禁用通過後者URL訪問?

回答

1

,因爲它被髮送到服務器,這可以作爲%{THE_REQUEST}您可以檢查原始請求。檢查的/_files/前綴表示該請求是後一種類型的,然後你就可以重定向到相應的格式:

RewriteCond %{THE_REQUEST} ^[A-Z]+\s/_files/ 
RewriteRule ^_files/[^/]+/(.*)$ http://%{HTTP_HOST}/f/$1 [R=301,L] 
+0

這類作品,但由於某種原因它不會匹配的子文件夾,如:HTTP ://grapefrukt.com/_files/grapefrukt.com/games/ – grapefrukt 2010-09-14 12:53:45

+0

@grapefrukt - 嗯,它似乎在我的測試服務器上正常工作。在那個目錄中是否有'.htaccess'和'mod_rewrite'指令可能? – 2010-09-14 17:24:48

+0

事實證明這確實工作,我懷疑有一種緩存的重寫正在我的主機上進行。謝謝! – grapefrukt 2010-09-24 07:12:06