2014-12-30 79 views
1

我一直有一個相當標準的Apache配置。現在我們正在引入一個新概念,用戶會話特定的URL將會改變事物。基本上我們有一個DocumentRoot和任何東西,如:apache mod_rewrite用戶的URL到index.php

http://example.com/會擊中DocumentRoot指令中的index.html。

但現在我希望能夠做到像

http://example.com/uid/5/ http://example.com/uid/2

那些仍然應該打的index.html在已設置DocumentRoot的。該URL主要用於服務器端和客戶端腳本,以便能夠執行自己的任務。

在Apache中處理這個問題的最好方法是什麼? mod_rewrite在這裏甚至是必要的嗎?

我還需要能夠支持以下如說現有路徑:

http://example.com/foo/bar/something.php將被改寫,以http://example.com/uid/3/foo/bar/something.php但正如前面仍然會打在文件系統中的同一位置。 >不變
http://example.com/uid/3/foo/bar/something.php - - >改寫爲/foo/bar/something.php?uid=3


編輯
http://example.com/foo/bar/something.php:無UID附加

+0

你可能確實需要mod_rewrite。 「/ uid/3/foo/bar/something.php」實際上是否存在與所有實際目錄一樣的完整路徑? –

+0

在DocumentRoot下的文件系統上存在'foo/bar/something.php'。 '/ uid/3'是我全面添加的'虛擬路徑'。注意:'foo/bar/something.php'默認已經有效。 – randombits

回答

1

你可以通過把這段代碼在你的htaccess

RewriteEngine On 
RewriteRule ^uid/([1-9][0-9]*)/(.+)$ /$2?uid=$1 [L] 

示例使用mod_rewrite

RewriteEngine On 
RewriteRule ^uid/[1-9][0-9]*/(.+)$ /$1 [L] 
+0

如果我不想追加'uid = 3'作爲查詢字符串?我想離開這個URL,但要確保它在文件系統上正確的路徑。 – randombits

+0

我把它作爲一個例子,如果你不想要它,你可以擺脫它(見我編輯的答案) –