Php URL重写查询数据库?
我试图理解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
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和美观目的,他们会在末尾添加您的名字。