如何在 php 中使用用户名作为 url 的一部分


How to use a username as part of the url in php

假设我有一个网站

www.mysite.com

无论如何都必须有用户页面网址

www.mysite.com/username

而不是通常的

www.mysite.com/user.php?id=whatever

我想知道这在 php 中是否可以在没有多个文件夹和索引页的情况下实现。我想避免使用文件夹方法,因为据我了解,您将遇到效率问题,特别是如果您必须从一个用户跳到另一个用户。我想做这种方法,因为有人更容易说从中获取我的信息

www.mysite.com/username

而不是其他选项。任何帮助(教程、网站等)将不胜感激。提前谢谢。

我想知道这在 php 中是否可以在没有多个文件夹和索引页的情况下实现。

是的,这是可能的。您可以将所有请求重定向到索引.php并手动处理此 URL(路由)

示例 .htaccess 用于将所有请求重定向到索引.php

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?route=$1 [L,QSA]

但是实施

www.mysite.com/username

这不是一件容易的事情。你必须知道你所有的系统使用,如/register,/login,/post,...等,不允许注册这些用户名。我建议您实施此方案:

www.mysite.com/~usernamewww.mysite.com/user/username

将前端控制器模式应用于任何类型的路由器 [例如 klein],那么您需要在 webroot 中使用单个通用.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

是的,当然,在您的DOCUMENT_ROOT/.htaccess文件中使用此规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /user.php?id=$1 [L,QSA]