php - URL 重写查询数据库?

标签 php mysql url url-rewriting seo

我正在尝试了解 URL 重写的工作原理。我有以下链接。

mysite.com/profile.php?id=23

我想用用户的名字和姓氏重写上面的 url。

mysite.com/directory/liam-gallagher

从我读到的内容来看,您指定了 url 应该输出为什么的规则,但是我如何查询我的表以获取每个用户名?

抱歉,如果这很难理解,我自己也搞糊涂了!

最佳答案

你从错误的方向看这个。你不能做那种自动 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>

并在将用作 url 的数据库中为用户创建一个特定名称。

+---------+----------+------+-----------+----------------+
| user_id | username | name | surname   | url            |
+---------+----------+------+-----------+----------------+
|      23 | liam     | Liam | Gallagher | liam-gallagher |
+---------+----------+------+-----------+----------------+

现在当有人访问您的 http://mysite.com/directory/liam-gallagher 时,您可以阅读最后一个条目并在您的数据库中找到 user_id 并且让您的脚本完成剩下的工作。

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

关于php - URL 重写查询数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12972608/

相关文章:

php - 为 Web 服务器遗留 PHP/MSSQL/MySQL 代码集成测试驱动开发

mysql - 选择 WHERE IN(子查询)

php - 我想在不使用 slug 的情况下使 PHP seo 的博客 Url 友好

php - 如何将整个站点从 HTTP 重定向到 HTTPS(Drupal 站点中除了 2 个页面之外)?

php - 从foreach循环php中将信息存储在数组中

php - 为某些网站切换 nginx php 版本

mysql - 如何在参数化查询中转义单引号

javascript - 使用 Ajax 提交表单和字符串

http - 等号可以出现在查询参数中的第一个等号之后吗?

python - Django REST Framework 和 FileField 绝对 url