2010-04-11 94 views
8

我認爲這是一個非常簡單的問題。Mod重寫隱藏文件夾

你是如何重寫apache以隱藏文件夾的。

EX:www.website.com/pages/login.php到www.website.com/login.php

或www.website.com/pages/home.php到www.website.com/ home.php

該文件夾需要一直隱藏。謝謝

回答

12

我假設你想要的是瀏覽器請求/home.php但服務器實際使用位於/pages/home.php的文件,對不對?如果是這樣,這應該工作:

確保apache mod_rewrite模塊已安裝。然後,用在你的Apache配置是這樣的,虛擬主機配置,或(不太理想).htaccess文件:

RewriteEngine On 
RewriteRule ^/(.*)$ /pages/$1 

規則使用正則表達式,所以你可能想看看關於這個問題,如果參考你不確定。閱讀manual以獲取關於其他指令(RewriteCond可能非常有用)或規則選項的更多信息。

0

如果您的例子實際上反映了你所需要的文件,然後在你的.htaccess文件:

#Options +FollowSymLinks 
RewriteEngine On 

RewriteRule ^/pages/(.+)\.php $1\.php [NC, L] 

此外,如果目錄具有讀取權限,它不能在現實中「隱藏」。我假設你的意思是它不再出現在網址中。

+1

這也是我最初的樣子。但這意味着用戶會在地址欄中看到/pages/home.php,而服務器會提供/home.php。重新思考後,我認爲OP想要相反... – grossvogel 2010-04-11 19:35:31

+0

@grossvogel - 你是對的 - 我更仔細地重讀他的問題。 – TMG 2010-04-11 21:18:35

8

我知道這裏的原始文章來自幾年前,但它已經在搜索引擎中首先出現,所以也許這將幫助其他人尋找在URL中隱藏文件夾名稱。

不完全是什麼原始的海報想要的,但沿着相同的路線。

RewriteCond %{HTTP_HOST} ^mydomainname\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.mydomainname\.com$ 
RewriteCond %{REQUEST_URI} !^/subfoldername/ 
RewriteRule (.*) /subfoldername/$1 

以上例子將重定向到mydomainname.com或www.mydomainname.com任何請求到在根目錄域的subfoldername目錄,子文件夾名稱將不會出現在URL中。