2011-03-11 71 views
0

我一直在試圖讓我的網站更加用戶友好,我想出了這個設置我怎樣才能讓我的htaccess使我的網址看起來像foo.bar/user這個片段我有

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ userpage?user=$1 [NC,L] 

我將此添加到我的.htaccess但我現在對如何訪問這些網址感到困惑。

在我index.php當我一個用戶登錄試圖重定向使用

userpage.php?user=s2xi 

的用戶,但該URL解析爲www.foo.bar/userpage.php?user=s2xi,而不是www.foo.bar/s2xi

,並試圖以此爲檢查是否用戶存在(有沒有更好的辦法?)

if($_GET['user'] != $_SESSION['username']){ 
    header("Location: no_user.php"); 
}else{ 
    //load page 
} 

我使用Smarty模板引擎我的網站上,我有我的「的MES'目錄中屬於會員檔案

www.foo.bar/users/s2xi/themes

,但我想www.foo.bar/s2xi指向人的個人資料頁是可見的被大家其他,而不是他們的帳戶頁面。

回答

0

如果這是逐字 - 例如userpage? =>userpage.php?,那麼您在您的RewriteRule中缺少.php

但是,你會遇到一些問題,除非你使用框架來幫助你區分路線。如果您切換爲爲用戶頁面使用單獨的URI格式(例如/user/foo),則不會產生衝突;但就目前而言,使用.htaccess以這種格式重寫網址可能會導致應用程序的其他部分出現問題。

要使用一個單獨的URI格式,這樣做,改變你的最後的.htaccess行(RewriteRule)到:

RewriteRule ^user/(.+)/?$ userpage.php?user=$1 [NC,L] 

可能需要考慮增加QSA爲好。

+0

哦,所以如果我不使用框架,我最好的選擇是使用新的重寫規則嗎?嗯什麼是QSA? – Eli 2011-03-11 19:42:00

+0

QSA是另一個標誌(進入'NC'和'L'),它將查詢字符串轉發;所以url'/ user/foo?bar = baz'會被轉發到'userpage.php?user = $ 1&bar = baz'。否則查詢字符串不會傳遞。是的 - 如果你不使用框架,我建議使用新規則。 – mway 2011-03-11 19:49:43

+0

謝謝,我來看看。快速提問。當我登錄和我的網址foo.bar/s2xi加載,它不加載頁面內容。任何想法爲什麼? – Eli 2011-03-11 20:43:24

相關問題