Twitter 喜欢 URL,但带有 @'s?

Posted

技术标签:

【中文标题】Twitter 喜欢 URL,但带有 @\'s?【英文标题】:Twitter Like URL but with a @'s?Twitter 喜欢 URL,但带有 @'s? 【发布时间】:2013-08-20 15:10:42 【问题描述】:

我正在制作一个社交网站,但我无法完成: 如果网址是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=*,但这不起作用,所以我正在寻找一些关于下一步做什么的建议。

【问题讨论】:

【参考方案1】:

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

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]

希望这会有所帮助! :)

【讨论】:

/@username?about怎么样? 可以使用PHP的explode函数。数一下是否有超过 1 个部分(第 1 部分 = 用户名,2 = 页面等)然后将第 2 部分用作页面,如果没有则显示主页。 好吧,最后一件事,如果我的 URL 是 http://localhost/@,它会给我一个 404 警告,如果在 @之后没有任何内容,是否可以这样做>,它会将其重定向回索引? 很简单,把这个加到rewrite url RewriteRule ^@$ /index.php [r=301,nc]的末尾

以上是关于Twitter 喜欢 URL,但带有 @'s?的主要内容,如果未能解决你的问题,请参考以下文章

在 Twitter 上共享带有查询字符串的 URL

Twitter文本js,不计算包含带有#的url的文本的长度!

如何在本地测试 twitter API?

在 Twitter API 中搜索带有 Dash 的单词

Twitter SDK 请求代码

带有 Rails 5 的 Omniauth-twitter 停止工作! OAuth::Unauthorized 403 Forbidden