我想知道我是否应该使用 .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/