2017-08-17 157 views
-2

有幾個主題要重寫URL從http://example.com/page.php?id=3http://example.com/username或從http://example.com/users/usernamehttp://example.com/username自定義配置文件頁面,如Facebook中的PHP

他們做到這一點與的.htaccess重寫規則,但問題是,如果你鍵入example.com/username它重定向到http://example.com/page.php?id=3

但在Facebook上等網址還是一樣facebook.com/username。它不會重定向到新的網址。

他們是怎麼做到的?

我的想法做,創建動態網頁一樣username.html這是低效的,因爲內存

我的.htaccess文件:

RewriteEngine on 
RewriteRule ^([^/]+)$ userinfo.php?username=$1 [L,QSA] 

而且我userinfo.php

<?php 

require_once ("config.php"); 
if(isset($_GET["username"])) 
{ 
    $username = $_GET["username"]; 
    $stmt = $connection->prepare("SELECT * FROM userxmeta WHERE username = :username "); 
    $stmt->bindParam(":username",$username,PDO::PARAM_STR); 
    $stmt->execute(); 

    if($stmt->rowCount()>0) 
    { 
     $row = $stmt->fetch(PDO::FETCH_ASSOC); 
     header('Content-type: application/json'); 
     echo json_encode($row); 
    } 
} 
?> 
+1

您能否更新您的問題以包含您當前的代碼? – Jasper

+0

您可以重定向或只是重寫。重寫將請求作爲GET發送到服務器,用戶的路徑仍然可讀。 – chris85

+0

您需要**嘗試自己編寫代碼**。在[**做更多的研究**之後](https://meta.stackoverflow.com/q/261592/1011527)如果你有問題**發佈你已經嘗試了**的**明確的解釋不工作**並提供[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。閱讀[如何問](http://stackoverflow.com/help/how-to-ask)一個很好的問題。請務必[參觀](http://stackoverflow.com/tour)並閱讀[this](https://meta.stackoverflow.com/q/347937/1011527)。 –

回答

0

我找到了答案 .htaccess RewriteRule to path without changing URL

# Tell PHP that the mod_rewrite module is ENABLED. 

SetEnv HTTP_MOD_REWRITE On 
RewriteEngine on 
RewriteBase/

#For internal pages(rewrite "/page.php?name=about us" to "AboutUs") 

RewriteCond %{QUERY_STRING} ^name=([^&\s]+)$ 
RewriteRule ^(?:page\.php|)$ /%1? [R=301,L] 

RewriteCond %{QUERY_STRING} ^name=([^&\s]+)&name=([^&\s]+)$ 
RewriteRule ^(?:page\.php|)$ /%1/%2? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^\s\/]+)/?$ page.php?name=$1&r [L,QSA]