显示用户个人资料,例如site.com/user1

时间:2019-02-06 13:29:47

标签: php url nginx social-networking

我想用PHP创建一个简单的社交网络,每个用户都有一个共享其图像和文本的配置文件。

我有一个问题要添加功能,用户可以通过该功能访问他的个人资料,如Facebook,Instagram等,如下所示:

my website.com/user1

不是这个:mywebsite.com/@user1

2 个答案:

答案 0 :(得分:2)

创建.htaccess文件并添加以下文件:

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

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

答案 1 :(得分:0)

要与Nginx一起使用,请参考此答案https://stackoverflow.com/a/53415110/6749661

有几种方法可以执行此操作,例如@MRustamzade的答案,您可以更改.htaccess文件以包含如下代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ /user.php?username=$1 [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"];