我有一个基本的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
......这不是我想要的。有什么办法可以做到吗?感谢。
答案 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;
}