[英]How to mod_rewrite a number in url to a name
我有一个要在其中收集信息的数据库,在这种情况下
user 1023 = madonna
我今天有一个网址是:
http://domain.com/welcome.php?p=user&xoxo=1023
我想改成这样的网址
http://domain.com/user/madonna
尝试使用此htaccess
在此之前,您应该备份原始的htaccess文件
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^xoxo=([0-9]*)$
RewriteRule ^(.*)$ http://domain.site/user/madonna [R=301,L]
对于任意数字映射(例如数据库中定义的数字映射),无法完成此操作。 相反,在这种情况下,应用程序本身应处理名称<-> ID /数字处理。
重写(如果使用的话) 只能用于将/user/madonna
转换为/welcome.php?user=madonna
; 同样,“漂亮的URL”应由应用程序本身使用已经可用的用户名生成。
tldr; 应用程序(不是mod_rewrite)负责与用户名(即“ madonna”)和相应的用户ID(即1023)进行转换。
无论如何,一种稍微不同的方法是遵循StackOverflow对URL所做的操作。 它编码ID 和 “友好”部分。
例如,“友好问题URL”是http//../questions/$id/$title
而URL的唯一相关部分是http://../questions/$id
因为标题部分与找到正确的问题。 同样,我的个人资料是http://../users/2864740/user2864740
但是我的用户名与处理查询无关,并且http://../users/2864740
足以访问我的个人资料。
注意:如果“友好”部分与ID引用的项目不匹配,则StackOverflow将立即重定向到正确的完全友好URL。 这对于减轻诸如用户帐户之类的欺骗行为尤其重要。 它还可以确保在更改标题/用户名后传播“正确的” URL。
在此问题的上下文中,这意味着该ID已经可用并且可以轻松转换为查询参数的漂亮URL为http://domain.com/user/1025/madonna
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.