Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess mod_rewrite隐藏url字符串的最后一部分_.htaccess_Url_Mod Rewrite - Fatal编程技术网

.htaccess mod_rewrite隐藏url字符串的最后一部分

.htaccess mod_rewrite隐藏url字符串的最后一部分,.htaccess,url,mod-rewrite,.htaccess,Url,Mod Rewrite,我有以下网址:www.mydomain.com/music.php?music=musicianname&id=idnumber 我正在使用mod_rewrite来实现这一点:www.mydomain.com/music/musicianname/idnumber 这是我使用的规则: RewriteRule musician/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ /musician.php?$musician=$1&id=$2 [L] 这是工作得很好,但我想让这

我有以下网址:www.mydomain.com/music.php?music=musicianname&id=idnumber

我正在使用mod_rewrite来实现这一点:www.mydomain.com/music/musicianname/idnumber

这是我使用的规则:

RewriteRule musician/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ /musician.php?$musician=$1&id=$2 [L]
这是工作得很好,但我想让这个网址更用户友好。我想从url中隐藏“Musitor”和“idnumber”,并且只有“musicianname”:www.mydomain.com/musicianname/

实现这一点的最佳mod_重写规则是什么

这是工作得很好,但我想让这个网址更多的用户 友好的。我想从url中隐藏“音乐家”和“idnumber” 并且只有“musicianname”:www.mydomain.com/musicianname/

实现这一点的最佳mod_重写规则是什么

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

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

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

问题是“musicianname”不是唯一的,所以我不能将其用于查询,否则我就已经这样做了。我没有构建应用程序,但我正在实现新功能并改进它,这就是为什么我需要更好的URL。最初,URL是www.mydomain.com/music.php?id=musicianid。我已经改进了一点。注册不是为了获取用户名(我使用电子邮件),两个用户可能会使用相同的名称注册。所以我不能用“musicianname”来查询数据库。我只是想用我能用的最好最快的方式来修复我之前做过的事情。然后你真的必须在URL中使用idnumber。所以只需www.mydomain.com/musicianname/idnumber。用户习惯于看到这种类型的URL。它不像是硬的或长的。看看stackoverlfows的URL,他们都有ID号。没什么大不了的。当你的用户要求像facebook一样拥有他们的URL时,这是一件大不了的事。他们是音乐家,不是程序员,所以他们不关心更改URL过程中涉及的复杂性。这就是我发布这个问题的原因。然后你必须改变你的流程。没有办法解决这个问题。你必须改变你的代码,也许开始需要一个用户名。然后使用URL的用户名。没有快速的mod_重写修复程序。你必须做一些工作才能做到这一点。我正在研究其他更重要的功能,巴拿马杰克。现在的url将是mydomain.com/musizer/musicianId/musicianName。当合适的时候,我将实现一个用户名字段,并编写一个脚本,为已经注册的音乐家创建临时的唯一用户名,并让他们能够编辑它。