到目前爲止,我已經做到了這一點:用戶友好的URL - 國防部重寫和PHP重定向
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?load=$1 [QSA,L]
然後我的索引頁(在根目錄下),我使用PHP來確定哪些頁面加載:
// Swap to variables
$load = $_GET['load'];
// Home page
if (!$load || $load == "") { include('home.php'); exit(); }
// Dashboard
if ($load == "dashboard") { include('dashboard.php'); exit(); }
// About
if ($load == "about") { include('about.php'); exit(); }
// Username
$data_array = array(':username' => $load);
$select_account = $connect->prepare("SELECT * FROM `users` WHERE `username` = :username");
$select_account-> execute($data_array);
$account_amount = $select_account->rowCount();
if ($account_amount > 0) { include('profile.php?name=$load'); exit(); }
// Redirect to 404 if there are no results
include('404.php'); exit();
到目前爲止的所有工作,但用戶可以將照片上傳到畫廊,我希望他們來看待,像這樣:
www.mysite.com/[username]/gallery/
但如果你應該輸入那個URL作爲重寫的[username]/gallery/
作爲一個部分,這意味着$load = [username]/gallery
這會給我一個'404'。
可能有更好的解決方案來獲得理想的結果,但我對.htaccess和重寫不太好。我想補充一點,我喜歡這個改寫過,因爲我有子目錄稱爲signup
和signin
兩個都具有子目錄中他們太多,但如果我去的網址:
www.mysite.com/signup
www.mysite.com/signin
它忽略了重寫並進入目錄,而不是通過$load
聲明運行它,這是我想要的。
另外,需要注意,在註冊一個帳戶,它匹配的字符串,如dashboard
或about
等不允許他們使用的任何用戶名,該用戶名停止和$load
if/else語句和它們包括混合達等
編輯
我忘了另一個要注意的是,因爲他們可以調用任何他們喜歡的畫廊,它需要做一個搜索,看看是否能廊存在,因此,例如:
www.mysite.com/username/my+first+album
首先需要檢查用戶名是否存在,然後檢查相冊是否存在,然後顯示它是否存在,或者404 /重定向到不存在的地方。所以基本上,這兩個參數/查詢都是動態的。不僅如此,則該相冊中的個別照片需要工作相同,例如:
www.mysite.com/username/my+first+album/my+picture
我希望是有道理的......
我查了一下這個URL路由,從來沒有聽說過它,但我已經想出了一個很好的方式來使用它,以及從你和莎莉給我的答案一些想法。我即將寫出一份答案來說明我如何運行。 +1爲您提供幫助! – Joe 2012-02-02 06:10:01