2014-04-24 43 views
1

我的網站是其最基本的形式,爲特定類型的個人的網站。當一個人註冊時,我想創建一個自定義頁面(或者至少是其中一個的圖像/外觀)來顯示他們的個人資料。目前,我使用PHP $_GET參數來確定在用戶導航到網站上的相應腳本時顯示哪個配置文件。自動爲新網站用戶創建自定義頁面(或URL) - PHP

針對更好的SEO,我希望每個用戶都有自己獨特的鏈接;例如,FaceBook允許其用戶擁有可以鏈接的自定義URL。如何爲每個註冊的新用戶在目錄中自動生成一個頁面,並在用戶更新他/她的詳細信息時自動更新該頁面?我明白,使用.htaccess可能會有一個潛在的過程,使用用戶的名稱/標題/等從數據庫中提取他們的詳細信息,但將其顯示爲唯一的URL。

任何人都可以提供建議或這個實現的例子嗎?我感謝任何和所有的幫助!

P.S.我想,根據用戶的位置(即狀態)對文件進行排序應該沒有那麼困難,一旦上述功能已經被整理出來。理想情況下,我會喜歡像../users/state/user_name這樣的目錄結構,其中state是用戶的位置,user_name是它們的唯一名稱。再次感謝!

+0

您可以摹基於您希望的任何邏輯來嵌入唯一的url。使用'.htaccess'來重定向發送一個可以在你的數據庫中查詢的參數。你可以找到[這裏]的信息(http://stackoverflow.com/questions/1980721/htaccess-mod-rewrite-automatically-using-php-or-something?rq=1)。我會遠離基於狀態的目錄結構 - 人們移動和移動目錄似乎不值得付出努力。保持簡潔的平面目錄結構。 – mseifert

+0

謝謝@mseifert的迴應。這與StackOverflow與他們的問題URL一樣嗎? – CFitz

+0

我已回覆回覆格式。見下文。 – mseifert

回答

1

apache的.htaccess很少有工作 - 大部分邏輯都在php本身。 Apache只是將每個請求重定向到選定的腳本文件。

我假設你使用apache wid mod_rewrite。如果是這樣的話,你應該添加這.htaccess文件:

# check if mod_rewrite is present 
<IfModule mod_rewrite.c> 
    #turns it on 
    RewriteEngine on 

    #if the requested url isn't a file or a dir 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    #process index.php, no matter what was in the url 
    RewriteRule^index.php [L] 
</IfModule> 

(注意,也的.htaccess必須有權覆蓋apache的當前設置),你可以查閱一下網址的index.php

在sequested和處理信息

$whatTheUserRequested=$_SERVER['REQUEST_URI']; 
$parameterArray=explode('/', $whatTheUserRequested); 

//check the first param. 
switch($parameterArray[1]) 
{ 
    //if it was something like "thesite.com/main/fsadf/hgfdsgsdf/...." 
    case "main": 
    include "mainPage.php"; 
    //....or do something else 
    break; 

    //if it was something like "thesite.com/login/asdfe/xxxx/...." 
    case "login": 
    include "loginPage.php"; 
    //....or do something else 
    break; 

    default: 
    //here you MUST check if $parameterArray[1] is a username 
    if(check in db if $parameterArray[1] is user) 
    { 
     include "userPage.php"; 
    } 
    else 
    { 
     include "pageNotFound.html" 
    }; 
} 

您也可以檢查在包括PHP的第三或第四參數,來處理URL的像「mysite.com/johnny95/edit」

+0

這是大多數大型網站的做法嗎?我想盡量減少處理URL所需的負載量。另外,我怎樣才能確保這些鏈接被搜索引擎索引,即這種方法是否允許我顯示所有的用戶?理想情況下,如果有人搜索到,我希望帶有用戶名的網址出現在搜索結果中。我感謝您的幫助! – CFitz

+0

搜索引擎僅查看由腳本生成的輸出,因此他們將「site.com/johnny95」視爲單獨的頁面。爲了幫助他們爲您的網站編制索引,請構建一個網站地圖(您可以使用php生成),robots.txt,添加相關元標記等。 – user1328370

+0

對於大多數大型網站 - 可能取決於網站,但原則是這樣的 - 取用戶輸入的任何網址,並根據它構建一個網頁(編輯:在極少數情況下,他們可能會將瀏覽器重定向到不同的網址) 。 – user1328370

0

您可以根據您希望的任何邏輯生成唯一的url。使用.htaccess重定向發送可在數據庫中查詢的參數。你可以找到有關here的信息。我會遠離基於狀態的目錄結構 - 人們移動和移動目錄似乎不值得付出努力。保持簡潔的目錄結構

如果你看這篇文章的網址:questions/23275736 /自動創建自定義頁面或網址爲新網站用戶php他們包括「問題「(可能是數據庫表),」23275736「(可能是表鍵ID)和用戶友好的字符串。我不知道,但我懷疑他們使用類似於附加鏈接中的方法使用.htaccess重定向。

您還可以查看this post's answer另一個使用斜槓重定向的示例。

+0

我可以看到他們將如何去使用該密鑰ID拉動相關細節,但他們怎麼會允許包含的這些問題與問題標題搜索引擎索引?他們只是緩存所有問題?謝謝! – CFitz