-1

假设我有成员,当他们登录时,他们会转到mysite.php/id=username,其中用户名总是不同,具体取决于他们的实际用户名。

我可以在 mod rewrite 中使用一行来去除 id= 并留下用户名吗?我该怎么做?

示例:mysite.php?id=john- 我希望它是mysite/john,对其他人也是如此。

4

4 回答 4

1

要重写给/mysite/john/mysite.php?id=john,请使用:

RewriteBase /
RewriteRule ^mysite/([^/]+) mysite.php?id=$1 [L]

你可以在这里测试这个规则:http: //htaccess.madewithlove.be/

于 2012-11-05T23:24:18.243 回答
0

尝试:

RewriteRule ^([a-zA-Z0-9\-_]+).php$ mysite.php?id=$1 [L]
于 2012-11-05T23:21:23.690 回答
0

当然,只需这样做:

RewriteRule ^mysite/([A-za-z0-9-]+).php$ mysite.php?id=$1 [L]

这假设用户 ID 是字母(大写和小写)、数字或破折号。将字符添加到适合您的正则表达式。当然你可以做任何事情.+来匹配任何东西,但我不喜欢让事情变得那么开放。

于 2012-11-05T23:19:22.850 回答
0

您不能mod_rewrite为此使用,您可以尝试mod_substitute(确保mod_filter也启用):

AddOutputFilterByType SUBSTITUTE text/html
Substitute s|/?index\.php\?id=([a-zA-Z0-9_-]+)|/index/$1/|i

不知道这会有多好,还没有测试过。

然后你可以使用mod_rewrite

RewriteBase /
RewriteRule ^index/([a-zA-Z0-9_-]+) index.php?id=$1 [L]

更新:

我想我误解了您的问题,如果您尝试将地址栏表单中的 URL 更改index.php?id=username为此index/username应该可以:

RewriteCond %{QUERY_STRING} ^id=([a-zA-Z0-9_-]+)$
RewriteRule ^index\.php$ index/%1/? [R,L]
于 2012-11-05T23:42:11.517 回答