我有自己的网站,我想像stackoverflow那样
当您查看网址时,有一个很好的网址:https://stackoverflow.com/questions/40587870/javascript-variable-in-bootstrap-tooltip
当我只输入https://stackoverflow.com/questions/40587870时,它会将我发送到完整的网址。
这就是我现在所拥有的:http://www.exmaple.com/projects.php?id=1
我如何在自己的网站上进行此操作?
答案 0 :(得分:1)
您需要某种数据库,将id
映射到相应的slug
。这可以像包含映射的文本文件一样简单,例如
41960970 htaccess-url-rewriting-id-and-name
40587870 javascript-variable-in-bootstrap-tooltip
然后,您可以定义RewriteMap
RewriteMap id2slug txt:/path/to/file.txt
然后在规则中使用它
RewriteRule ^questions/([^/]+)$ /questions/$1/${id2slug:$1} [R,L]
此规则从请求中捕获id,然后将客户端重定向到附加了slug的相同URL。
您也可以使用其他表单,例如dbm
,dbd
,甚至是提供映射的外部程序,而不是文本文件。
请注意,RewriteMap
仅在主服务器或虚拟主机配置中可用。
如果您无法访问主配置,则可以使用执行重定向的脚本来模拟此配置,例如
RewriteRule ^questions/([^/]+)$ /id2slug.php?id=$1 [L]
并在脚本中从数据库中检索slug并发回
$id = $_GET['id'];
$slug = ...;
header('Location: http://www.example.com/questions/' . $id . '/' . $slug);