Php URL重写查询数据库?

Php URL重写查询数据库?,php,mysql,url,url-rewriting,seo,Php,Mysql,Url,Url Rewriting,Seo,我试图理解URL重写是如何工作的。我有以下链接 mysite.com/profile.php?id=23 我想用用户的名字和姓氏重写上面的url mysite.com/directory/liam-gallagher 然而,从我读到的内容来看,您指定了url输出的规则,但是如何查询我的表以获得每个用户名呢 对不起,如果这很难理解,我把自己弄糊涂了 类似(只是一份草稿,适合您自己的需要……) 比如(只是一个草稿,适应你自己的需要…): 我使用的一种方法如下所示 制定重写规则,例如 mysite

我试图理解URL重写是如何工作的。我有以下链接

mysite.com/profile.php?id=23
我想用用户的名字和姓氏重写上面的url

mysite.com/directory/liam-gallagher
然而,从我读到的内容来看,您指定了url输出的规则,但是如何查询我的表以获得每个用户名呢

对不起,如果这很难理解,我把自己弄糊涂了

类似(只是一份草稿,适合您自己的需要……)

比如(只是一个草稿,适应你自己的需要…):


我使用的一种方法如下所示

制定重写规则,例如

mysite.com/directory/(.*)
它重定向到:

mysite.com/profile.php?user=%1
将%1作为从规则捕获的参数

然后从profile页面上的查询参数中获取用户,并从db中获取该用户的ID


我使用的一种方法如下所示

制定重写规则,例如

mysite.com/directory/(.*)
它重定向到:

mysite.com/profile.php?user=%1
将%1作为从规则捕获的参数

然后从profile页面上的查询参数中获取用户,并从db中获取该用户的ID


您从错误的方向看这个问题。你不能做那种自动的url重写。最好是创建一个全面的url重写:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>
现在当有人访问您的
http://mysite.com/directory/liam-gallagher
,您可以读取最后一个条目并在数据库中找到
用户id
,然后让脚本完成其余部分


另一种方法是建议的。创建一个类似
http://mysite.com/directory/23/liam-gallagher
并从链接中读取id。但我个人不喜欢那种网址。在我看来,它们只是快速/懒惰的变通方法。

你从错误的方向看这个问题。你不能做那种自动的url重写。最好是创建一个全面的url重写:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>
现在当有人访问您的
http://mysite.com/directory/liam-gallagher
,您可以读取最后一个条目并在数据库中找到
用户id
,然后让脚本完成其余部分


另一种方法是建议的。创建一个类似
http://mysite.com/directory/23/liam-gallagher
并从链接中读取id。但我个人不喜欢那种网址。在我看来,它们只是快速/懒惰的解决方法。

你只需搜索名称而不是ID。你能澄清你不确定的是什么吗?如果我搜索名称,如果我有两个同名用户怎么办?@Liam你不应该!您需要为每个人创建一个唯一的URL段塞@利亚姆,你必须阻止这种事情发生。或者像堆栈溢出一样-查看你的个人资料URL:他们使用数字ID来识别你,但为了搜索引擎优化和美观,他们在末尾添加了你的名字。你只需搜索名字而不是ID。你能澄清你不确定的地方吗?如果我搜索名字,如果我有两个同名的用户怎么办?@Liam你不应该!您需要为每个人创建一个唯一的URL段塞@利亚姆,你必须阻止这种事情发生。或者像堆栈溢出一样——查看您的个人资料URL:他们使用数字ID来标识您,但为了SEO和美观目的,他们会在末尾添加您的名字。