用户名作为url的一部分而不是查询字符串

时间:2014-08-02 12:28:12

标签: javascript jquery url patch username

我很抱歉,如果之前已经提出这个问题,但我没有找到任何相关内容。

我正在构建一个单页应用。

我需要的是将用户名设置为URL的一部分而不是使用查询字符串。 现在我有以下结构:

http://www.myPageUrl.com/?user=username

因此,我从查询中获取用户名,然后提取有关此用户的所有数据。

我需要做什么:

http://www.myPageUrl.com/username

如何使用仅限客户端设置以下结构? 我没有使用任何库(只有jquery)。

谢谢!

3 个答案:

答案 0 :(得分:1)

客户端只有这个是不可能的,你的新网址使得它看起来像/ username是一个文件夹,服务器没有(我假设)。如果您将自定义.htaccess和一些服务器端代码写入止血带文件夹名称并处理来自那里的响应,这可能是可行的,但对于纯客户端而言,这根本不可能。

万一我们完全不知道你想要完成什么,只是寻找一个重定向脚本,并且实际上每个用户都有文件夹结构,那么它只是一个简单的问题,即剥离查询值并进行重定向:

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

window.location.replace("http://example.com/"+getParameterByName('user'));

答案 1 :(得分:0)

如果您在后端使用任何类型的路由。如果没有其他路由匹配,则应将其配置为响应此请求。基本上,如果用户名不存在于数据库中,则应该给出404错误。

在客户端,您可以使用HTML 5的推送状态。

history.pushState(null, 'New title of page', 'Username');

答案 2 :(得分:0)

因此。我发现了怎么做。

也许有人需要它,所以我与你分享。

正如我所说,我需要它只在客户端完成。 所以我做了什么: 我更改为.htaccess文件,现在它看起来像:

<IfModule mod_rewrite.c>
RewriteEngine One
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

然后,非常简单。 使用javascript我做了以下:

var user=location.pathname.split('/')[3]

就是这样。非常简单。 感谢所有试图提供帮助的人。