4

我正在制作一个社交网站,但我无法完成:如果 url 是http://url.com/@username,我希望它显示http://url.com/user?u=username页面,但显示http://url.com/@usernameURL。

但是,如果开头没有@,则将其视为常规 URL。

这是我的.htaccess文件:

Options +FollowSymLinks

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^/(\d+)*$ ./user.php?u=$1

最后三行是我尝试过的,但这并没有按我的意愿工作。我认为它会起作用,因为RewriteRule ^/(\d+)*$在斜杠之后获取任何 URI,并将其重写为.user.php?u=*,但这不起作用,所以我正在寻找一些关于下一步做什么的建议。

4

1 回答 1

3

根据我对您问题的理解,这应该可行。

Options +FollowSymLinks

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^@(.+?)$ user.php?u=$1 [NC,L]

它要求您在用户名之前有一个 @ 并将其作为 GET 变量 (u) 传递。但是,一个人可以添加其他字符,这可能会将其混淆为用户名。

/@用户名/松饼

但是如果你想要这样,并且每个用户名都有页面(例如,/@username/info、/@username/about 等),你可以使用 PHP 中的explode () 函数。

如果你只是想让它得到用户名而不是别的,你可以试试

RewriteRule ^@([A-Za-z0-9]+)$ user.php?u=$1 [NC,L]

希望这可以帮助!:)

于 2013-08-18T21:21:34.283 回答