【问题标题】: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=*,但这不起作用,所以我正在寻找一些关于下一步做什么的建议。

【问题讨论】:

    标签: .htaccess url


    【解决方案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]的末尾
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多