我正在建立一个社交网站,我无法完成这项工作:
如果网址为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>
答案 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]
希望这有帮助! :)