php - htaccess 将 get 变量更改为 mysql 用户名数据库

标签 php database .htaccess url

我想知道我是否应该使用 .htaccess 将 get 变量更改为数据库中的值(用户名)。

如果有

http://www.url.com/user.php?u=1

你怎么把它转换成

http://www.url.com/andrewliu

谢谢!

最佳答案

您需要更改您的 user.php 以使用用户名而不是用户 ID。然后你可以使用类似的东西:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L]

这通过 u 查询字符串参数传递用户名,本质上是:/user.php?u=andrewliu

否则 htaccess 和 mod_rewrite 无法知道 user_id 和 username 之间的映射是什么。或者,您可以编写数据库脚本并使用 RewriteMap为您创建映射:

RewriteMap usermap prg:/path/to/userscript

在你的 htaccess 中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=${usermap:$1} [L]

最后一个选项,如果您只有 5 个用户(或一些小用户),您可以进行显式重写:

RewriteEngine On
RewriteRule ^/?andrewliu$ /user.php?u=1 [L]
RewriteRule ^/?anotheruser$ /user.php?u=2 [L]
RewriteRule ^/?foousername$ /user.php?u=3 [L]

关于php - htaccess 将 get 变量更改为 mysql 用户名数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12132785/

相关文章:

php - 在 PHP 中替代 'or' 关键字

javascript - Parent.Location 在 php 语句中不起作用

php - Mysql 查询最小值到最大值

mysql - 将数据导入MySQL数据库

.htaccess - htaccess隐藏 "Index of"

javascript - DIV 不显示在与变量的链接上

r - 使用 R 优化/矢量化数据库查询

mysql - 有没有一个非常简单的MySQL表前端?

regex - .htaccess 将目录重定向到子目录

javascript - 如何在所有 javascript 中自动添加 defer 标签?