2015-10-25 61 views
0

我有以下网址:www.mydomain.com/musician.php?musician=musicianname & ID = IDNumber中mod_rewrite的隐藏URL字符串的最后一部分

我使用mod_rewrite来实现这一目标:WWW。 mydomain.com/musician/musicianname/idnumber

这是我使用的规则:

RewriteRule musician/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ /musician.php?$musician=$1&id=$2 [L] 

这是工作得很好,但我想使这个URL更多ü ser友好。我想从url中隐藏“音乐家”和“idnumber”,并且只有“musicianname”:www.mydomain.com/musicianname/

什么是最好的mod_rewrite规则来达到这个目的?

回答

0

这是工作得很好,但我想让这个URL更友好的用户 。我想隐藏“音乐家”和“idnumber”,地址为 ,只有“musicianname”:www.mydomain.com/musicianname/

什么是最好的mod_rewrite规则来达到这个目的?

这与获取最佳重写规则没有任何关系。这并不难。为了实现你想要的,你首先必须重新构建你的PHP代码。如果您从查询字符串中删除idnumber,我认为它不会在数据库中查找记录。因此,您必须让代码通过musicianname来查找数据。

一旦你这样做,你可以简单地改变你的重写。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/?$ /musician.php?musician=$1 [L] 
+0

问题在于“musicianname”不是唯一的,所以我不能用它来查询,否则我已经做到了。我没有构建应用程序,但我正在实现新功能并对其进行改进,这就是为什么我需要更好的URL。最初的URL是www.mydomain.com/musician.php?id=musicianid。我已经改进了一下。注册的目的不是为了使用用户名(我使用电子邮件),并且两个用户可能使用相同的名称注册。所以我不能使用“musicianname”来查询数据库。我只是试图解决我之前所做的最好,最快的方式。 –

+0

然后,你将不得不在URL中使用idnumber。所以只需www.mydomain.com/musicianname/idnumber。用户习惯于查看该类型的URL。它不像它很难或很长。看看stackoverlfows的URL,它们都有idnumber。没什么大不了的。 –

+0

当你的用户要求把他们的URL像facebook一样时,这是一件大事。他们是音乐家,而不是程序员,所以他们不关心更改URL的过程中涉及的复杂性。这就是我发布这个问题的原因。 –