我使用PHP编写了我的网站,不幸的是,艺术家资料目前是这样的:
website.com/profiles.php?id=xxx
这样我就可以获取id并查询数据库。
但是艺术家现在要求使用website.com/artistname作为他们的网址。就像Facebook和Myspace一样。我想。
我仍然需要能够获取艺术家ID,以便我可以查询数据库。
我想我将不得不使用mod_rewrite并在某处触发php函数,但我不确定该怎么做!
过去一天我在网上寻找类似的东西,但我似乎无法找到我想要的东西!
如果有人对我如何做到这一点有任何想法,或者帮助我的例子会很棒!
由于
答案 0 :(得分:1)
如果您不想在网址中使用该ID,则艺术家姓名必须是新ID,因此是唯一的。
在这种情况下,您可以在文档根目录的.htaccess文件中执行以下操作,将/<artistname>
内部重写为/profiles.php?name=<artistname>
:
RewriteEngine on
RewriteRule ^([a-z]+)$ profiles.php?name=$1
此处艺术家姓名也仅限于由字母组成。对于其他字符(尤其是.
和/
),您应该考虑不允许与现有文件冲突的值(例如profiles.php
)。如果您从真实姓名中获取URL艺术家名称,请确保不允许冲突。在这种情况下,您仍然需要人工ID来使URL路径唯一。
答案 1 :(得分:1)
您可以使用网址“slug”,其中记录具有唯一名称,即:
id name slug
001 Stack Overflow stack-overflow
然后您可以执行以下查询:
SELECT `fields` FROM `table` WHERE `slug`='$slug'
其中slug是URL的值。
我确信会提供替代品。
答案 2 :(得分:1)
你可以使用Gumbo的答案,但你也有一个可能的捷径:
您还可以使用404处理程序将/ artistname网址重定向到/profiles.php?id=xxx
以下是你将如何做到这一点:
这个方法的好处是你不必启用mod_rewrite。 (如果这是一个问题)
答案 3 :(得分:0)
首先,您需要更改您的艺术家表格,添加一个新列以定义艺术家的别名,例如'david-matthews-band',创建一个独特的索引,以防止与同音异义词艺术家混淆。
您需要编辑profile.php以按别名查找艺术家,例如website.com/profile.php?q=david-matthews-band
创建重写规则,将website.com/profile/david-mattews-band转换为website.com/profile.php?q=david-matthews-band:
RewriteEngine On
RewriteRule ^profile/* profile.php?q=$1