2012-03-13 59 views
0

我正在爲一個網站創建一個管理後端,我希望每個管理員都有他們自己的個人URL到他們可以在註冊時指定的管理文件夾,他們鍵入的文件夾名稱將被保存在MySQL數據庫。隱藏的管理文件夾,使用不同的文件夾名稱?

我想讓一個.htaccess文件能夠讀取用戶輸入的URL,如果它位於數據庫中的用戶管理文件夾字段中,它將重寫文件夾名稱(對於這個例子,我們稱之爲'admin'),以便用戶可以使用他們自己的URL從數據庫中重定向到/ admin。

例如..
用戶名 - 文件夾名稱
理查德 - myhiddenfolder

.htaccess文件應該再搶登錄用戶當前文件夾的名稱和負載/管理(通過類似$_SESSION['folder_name']設置),還在瀏覽器地址欄中顯示用戶文件夾名稱。

編輯
對不起,我的整體問題是,我怎麼能搶會話變種「FOLDER_NAME」,並解析它在.htaccess文件中重寫了一個名爲「管理員」的文件夾。

+1

有問題嗎? :) – 2012-03-13 19:20:30

+0

[你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – j08691 2012-03-13 19:21:16

+0

對不起,我的問題是,我怎樣才能抓住$ _SESSION ['folder_name']並將其解析到.htaccess文件中? – 2012-03-13 19:21:20

回答

1

從技術上來說,使用mod_rewrite或者只是純粹的符號鏈接(如果你有權限這樣做),這種事情是可能的。

如果你去與mod_rewrite,你會發現RewriteMap方便。但是,RewriteMaps的聲明不能在每個目錄上下文(這包括.htaccess文件)中進行,因此您需要更改http服務器配置,這可能不是您想要的。

每次用戶更改自定義文件夾名稱時,仍然可以從您的php腳本中更改.htaccess。然後,您會生成如下規則:

RewriteCond %{HTTP_COOKIE} (^|;|\s)custom_folder=custom/path(;|$) 
RewriteRule /custom/path /admin 

這需要將自定義路徑設置爲cookie。可悲的是,在RewriteRule測試中沒有辦法引用cookie值(僅在替代方法中,這不是我們想要的)。

還要確保自定義路徑不與任何實際路徑相沖突,因爲這會破壞相應用戶的網站。

對於符號鏈接,每次用戶更改他的管理文件夾名稱時,都會爲他創建/刪除/更新符號鏈接。當然,你仍然需要在管理腳本中檢查管理員權限,因爲符號鏈接是全局的。

無論您選擇哪種方法,請確保您在管理腳本中檢查管理員權限的管理權限

編輯: 我的答覆是有點對編輯的問題尚早,於是一個問題的答案是:這是不可能直接從一個.htaccess中訪問PHP的會話數據。雖然你可以嘗試玩prg: RewriteMaps

+0

非常好解釋,並且非常有幫助。謝謝! :) – 2012-03-14 12:13:46