2010-10-21 49 views
1

這是我一直想用htaccess解決的一個問題。我還沒有找到方法,但它看起來應該是可能的 - 也許有人可以提供幫助。使用htaccess來掩蓋文件夾名稱

假設我在我的網站的根目錄中有一個文件夾,名稱爲/foo/。我希望用戶能夠在路徑/bar/上訪問該文件夾,但出於各種原因,我無法重命名該文件夾。

爲了不造成混淆,我只希望有一條路可以看到 - 也就是說,我不要想讓人用名字/foo/來訪問該文件夾;他們應該始終使用/bar/。如果有人去example.com/foo/,他們的瀏覽器應該重定向到example.com/bar/ - 但返回的內容應該是/foo/的內容。

更爲複雜的是,/foo/中的頁面在/foo/中有硬編碼且不能更改的依賴關係(圖片,樣式表,鏈接到其他頁面等)。當然,這些必須仍然有效。

因此,要總結,這就是我想要的:

  • 請求example.com/foo/應該重定向到example.com/bar/
  • 請求example.com/bar/應返回example.com/foo/的內容。

這可能嗎?它在表面看起來好像會創建一個無限的重定向...但我敢肯定,有一些方法可以阻止在htaccess中,不是嗎?

我會很感激任何幫助。

(PS - 一點點額外的背景:正常的原因,我想這樣做是要重命名的WordPress /wp-admin/目錄的東西更專業,更便於客戶記憶,如/admin/但同樣的系統應該工作。能掩蓋路徑以這種方式)

回答

1

我發現了一種變通方法 - 使用一個符號鏈接 htaccess組合。

首先我創建了一個從/bar/foo/的符號鏈接。
後來我把這個htaccess的:

Options +FollowSymLinks 
RewriteRule ^foo/(.*)$ bar/$1 [R,L] 

這樣做到底想要的結果 - example.com/bar/顯示/foo/目錄的內容,並example.com/foo/重定向到example.com/bar/

但如果任何人都可以想出一個純htaccess解決方案我更喜歡這個!


更新:

好吧,我終於找到了如何做到這一點。它原來是很簡單...

RewriteCond %{THE_REQUEST} ^GET\ /foo/ 
RewriteRule ^foo/(.*)$ bar/$1 [R,L] 

RewriteRule ^bar/(.*)$ foo/$1 

唯一的問題是,它並沒有考慮RewriteBase的,所以你必須包括在第一線的完整路徑(^GET\後)。

+0

您是否找到解決方案? – Criesto 2015-07-17 07:17:18

0

如果我理解正確的話,你要的是這樣的.htaccess文件中:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule ^foo/$ bar/ 
RewriteRule ^bar/$ foo/ 
</IfModule> 
相關問題