URL重写一步一步...
第 1 步 - 决定您希望客户端 URL 的外观
你已经完成了这部分 - 你想example.com/peter
成为你的用户所看到的
第 2 步 - 计算服务器端 URL
从技术上讲,您可以生成大量硬编码的重写规则,例如
RewriteRule ^peter$ mypage.php?id=324
RewriteRule ^alice$ mypage.php?id=325
RewriteRule ^bob$ mypage.php?id=326
但是当你有很多用户时,这并不是特别有效。
您的 mypage.php 将接受一个 id,但您确实需要对其进行修改,以便它可以接受一个可能的用户名(但假设它将包含各种垃圾)。假设您决定允许它采用另一个查询字符串参数“提示”。所以现在你必须得到一个这样的 URL:example.com/mypage.php?hint=peter
确保您的脚本为它不理解的任何用户名生成 404 响应。
第 3 步 - 将客户端 URL 映射到服务器端 URL 的产品重写规则
这样做的一种方法是这样的 - 第一个RewriteCond行确保规则仅在请求与实际文件不匹配时触发。RewriteRule将导致请求由 mypage.php 处理,但将 URL 的其余部分作为“提示”参数传递。'qsa' 部分是 'query string append' 的缩写,这意味着原始 URL 中存在的任何查询字符串都将添加到书面规则中。“l”表示“最后一个”,因此不会调用进一步的规则来处理此请求。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z]+)$ mypage.php?hint=$1 [qsa, l]
在 mypage.php 中,您将使用提示查找用户。
请注意,我对模式的限制非常严格,只允许使用小写字母序列。这将有助于确保不会为您的站点可能产生的每个 404 调用您的脚本。