我真的不能证明使用 htaccess 来做这样的事情是合理的。我只使用 htaccess 通过一个 php 文件(我的根 index.php)路由所有内容,并让 php 整理出如何处理 url。例如,您可以这样做:
$uri = trim($_SERVER['REQUEST_URI'], '/');
$pieces = explode('/', $uri);
$username = $pieces[0];
然后用$username做点什么。
我解析和使用我的网址的方式比这要复杂一些,但这与您的问题无关。只要确保您所做的任何事情都能够解释任何可能的查询字符串等。
mod-rewrite 对性能不好,所以我不会滥用它。
根据您的 cmets 更新。
这只是对我的原始代码示例的轻微扩展:
//.htaccess - route all requests through index.php
RewriteCond %{REQUEST_URI} !\.(png|jpe?g|gif|css|js|html)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L]
这是您可以在 index.php 中执行的操作的示例:
$pieces = preg_split('-/-', $_SERVER['REQUEST_URI'], NULL, PREG_SPLIT_NO_EMPTY);
$username = $pieces[0];
include "users/{$username}.php";
现在您可以访问mysite.com/myUserNameHere,请求转到index.php,它会解析出用户名并包含该用户的文件。
就像你问的那样处理路由。我说我的路由比较复杂,但是我的使用复杂很多,所以不相关。我只是警告说,我的代码不考虑附加了查询字符串的 url,例如“mysite.com/someUser/?foo=bar”。在没有查询字符串的情况下解析 url 是一个简单的过程,您应该能够处理它。如果您在解析 url 时需要更多帮助,请发帖询问。