Twitter喜欢URL,但有@的?

时间:2013-08-18 20:28:37

标签: .htaccess url

我正在建立一个社交网站,我无法完成这项工作: 如果网址为http://url.com/@username,我希望它显示http://url.com/user?u=username页面,但显示http://url.com/@username网址。

但是,如果开头没有@,请将其视为常规网址。

这是我的.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=*,但这不起作用,所以我正在寻找关于下一步该做什么的一些建议。 p>

1 个答案:

答案 0 :(得分: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]

希望这有帮助! :)