显示用户个人资料,如网站。com/user1

Display user profile like site.com/user1

我想用 PHP 创建一个简单的社交网络,每个用户都有一个个人资料来分享他的图片和文字。

我有一个问题,我想添加用户可以访问他的个人资料(如 Facebook、Instagram 等)的功能,如下所示:

my website.com/user1

不是这个:mywebsite.com/@user1

创建 .htaccess 文件并添加:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ /user.php?username= [L] //update user.php?username to your users profile route.

如果您对 .htaccess 文件有任何疑问,请检查 this link

使用Nginx,参考这个回答

有几种方法可以做到这一点,就像@MRustamzade 的回答一样,您可以更改 .htaccess 文件以包含如下代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ /user.php?username= [L] //update user.php?username to your users profile route.

您也可以使用路由器框架,例如 Altorouter,它允许您执行此操作,并且具有大量页面。

使用 Altorouter,您可以设置许多路由规则,一个简单的设置可能包括:

$router = new AltoRouter();
$router->map( 'GET', '/profile/[*:username]', 'views/profile_view.php', 'home' );

$match = $router->match();

if($match) {
  header("HTTP/1.1 200 OK");
  require $match['target'];
} else {
  header("HTTP/1.0 404 Not Found");
  echo "Error 404 - File not found";
}

使用此代码将允许您前往 site.com/profle/username 将前往 views/profile_view.php

为了从 PHP 中的 URL 获取用户名,您可以使用 $match 变量,如下所示:

$username = $match["params"]["username"];