2012-06-18 75 views
1

我使用.htaccess代碼爲了將頁面標題傳遞給url,然後在頁面加載時使用php從mysql表中檢索它們。.htaccess創建用戶配置文件時出現問題?

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

我使用這個PHP代碼爆炸url並拿到冠軍:

$passed_url = $_SERVER['REQUEST_URI']; 
$passed_url = explode("/", $passed_url); 
$passed_url = end($passed_url); 

現在我想創建像這樣www.website.com/users/User_name_in_here 用戶個人資料頁我如何檢查用PHP,如果這是用戶頁面或者它只是一個普通的頁面可以是像這樣的作家:www.webiste.com/Page_title_in_here 有沒有更好的辦法做到這一點(我只是一個啓動在PHP)

回答

1

一種方法是檢查$passed_url[1]?如果它是'用戶',那麼你知道你在用戶頁面上。

更好的方法是使用index.php作爲前端控制器,並根據請求的uri將請求傳遞給控制器​​。有很多方法可以做到這一點。

一些框架將uri映射到class ::方法。因此,您的網址將被更改爲/users/view/username,並且users::view將被調用。

我更喜歡寫正則表達式,哪個正則表達式匹配控制哪個控制器被加載。

0

實際上,你可以改變你的重寫引擎.htaccess文件是這樣的:

RewriteEngine On 
RewriteRule (.*)-(.*)\.ptf$ ./?page=$1&id=$2&%{QUERY_STRING} 
RewriteRule ^([^/]*)\.ptf$ ./?page=$1&%{QUERY_STRING} [L] 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^(.*)$ ./?page=$1&id=$2&%{QUERY_STRING} 

那麼,這條規則,它究竟是:

URLwww.website.com/Page_title_in_here

它去到www.website.com/?page=Page_title_in_here

當你把這種方式,www.website.com/users-User_name_in_here

它重定向到www.website.com/?page=users&id=User_name_in_here

所以,你可以用$_GET["page"]$_GET["page"]變量操縱!

什麼說?我這樣做。希望這可以幫助你!