所以基本上我希望用户能够使用/45678
之类的网址访问我的网站,而不必使用/?p=45678
,所以我只想删除变量名称。我尝试过使用mod_rewrite,但似乎只是为了在访问页面时删除名称。
以下是当前代码:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^p=([0-9]+=$
RewriteRule ^/$ /%1 [R]
答案 0 :(得分:0)
只需将所有链接更改为/ 45678而不是?p = 45678。还是我完全误解了你?因为我从你的帖子得到的是它正常工作,除非你手动访问?p = 45678,因为它保持不变?p = 45678。
修改强>
这就是我用于http://www.madphp.org/dev/的东西,给它一个去,对我来说就像一个魅力(它也删除了index.php部分)。要访问现在更干净的URL,您只需要展开{{1}}变量以获取PHP脚本中的所有必需参数。
$_SERVER['PATH_INFO']
答案 1 :(得分:0)
您是否正确设置了mod_rewrite?如果是这样,您可以使用简单$_GET
变量之类的变量,在这种情况下,您必须在PHP中访问$_GET['p']
。
答案 2 :(得分:0)
我没有使用.htaccess就这样做了,但确实查询了数据库。我刚才写了这个,所以它使用PEAR DB,调整你的数据库/连接方法。我只需复制我的代码,让你弄清楚你需要做什么改变。
$db=connect_db();
$name=substr($_SERVER['PHP_SELF'], 20);
$name=strtolower($name);
$id=$db->getone("select id from user where login='{$name}'");
header("Location: /dragonart/profile?user=" . $id);
如果您将信息存储在数据库中,这可能是一个不错的选择。缺点是URL没有被重写,用户最终被发送到一个以$ _GET变量结尾的页面。
编辑:
刚刚意识到使用我的方法可以使用更简单的方法来获得答案。由于我的解决方案用于使用用户名查找用户的ID,然后将某人发送到他们的个人资料(需要id),更好的解决方案就是:
$var=substr($_SERVER['PHP_SELF'], $length);
header("Location: /path/to/page?p=".$var);
其中$ length是URL的通常长度,最后没有变量。