用户个人资料页面的自定义URL

时间:2017-12-02 12:24:38

标签: php mysql url

我有一个基本的PHP脚本,它以简单的格式显示来自MySQL数据库的用户配置文件信息。目前,要查看配置文件,请输入以下链接:

https://xxx.xxx.com/profile.php?id=XXX

然而,我想要的是与Twitter类似的东西,其中URL看起来更像:

https://xxx.xxx.com/profile/UserName

我已阅读friendly urls for users profile?,但建议使用:

https://xxx.xxx.com/profile.php?username=UserName

......这不是我想要的。有什么办法可以做到吗?感谢。

2 个答案:

答案 0 :(得分:1)

感谢' daker'回复。要回答我自己的问题,我需要使用URL重写。对于其他寻求如何操作的人,我建议查看https://www.addedbytes.com/blog/url-rewriting-for-beginners,它提供了一个全面的初学者友好指南。另外,我在Google上搜索了“重写生成器”,然后用一个来生成一个对我有用的重写。

答案 1 :(得分:0)

尝试以下代码 你的.htaccess文件将包含此代码

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/$    index.php    [L]

RewriteRule ^profile/([A-Za-z0-9-]+)/?$    profile.php?username=$1    [NC,L]    
RewriteRule ^([^\.]+)$ $1.php [NC,L]

注意:从您提供链接的位置只需将链接设为 http://example.com/profile/username

如果您的用户名包含空格,则字符串然后url将不会是干净的,因此请确保用户名不得包含任何特殊字符或空格

用于在函数

下删除和获取干净的字符串
function to_prety_url($str)
{
    if($str !== mb_convert_encoding( mb_convert_encoding($str, 'UTF-32', 'UTF-8'), 'UTF-8', 'UTF-32') )
        $str = mb_convert_encoding($str, 'UTF-8', mb_detect_encoding($str));
    $str = htmlentities($str, ENT_NOQUOTES, 'UTF-8');
    $str = preg_replace('`&([a-z]{1,2})(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', '\1', $str);
    $str = html_entity_decode($str, ENT_NOQUOTES, 'UTF-8');
    $str = preg_replace(array('`[^a-z0-9]`i','`[-]+`'), '-', $str);
    $str = strtolower( trim($str, '-') );
    return $str;
}