如何在每个页面的地址栏中保持相同的 url?
Posted
技术标签:
【中文标题】如何在每个页面的地址栏中保持相同的 url?【英文标题】:How can I keep the same url in the address bar for every page? 【发布时间】:2011-10-28 15:42:08 【问题描述】:我有一个使用 Codeigniter 构建的网站,其中有很多页面和目录。
假设站点名称是www.example.com
(这是索引页)。
如果用户转到另一个页面,例如单击“关于”链接,我怎样才能使所有页面的地址栏中的站点名称不更改?
【问题讨论】:
AJAX。 javascript 是在不更改请求 URI 的情况下更改页面内容的唯一方法。 U 可以使用 routes.php 中的通配符更改路由设置 购买一个域名,然后进行重定向(也许您可以向您的托管服务提供商要求)。最快的方法:使用 iframe。 我的问题是你为什么想要这样做?地址栏改地址有什么问题? 你已经在change site url using php or javascript?问过同样的问题。 【参考方案1】:这是一个坏主意,如果没有别的原因,它会阻止用户为您的网站添加书签。
但是,如果您正朝着这个方向前进,有两种方法可以做到这一点(我真的建议您现在就回头,以免为时已晚)。您可以在 iframe 中加载所有内容:
<!-- your site might look like this then -->
<html>
<body><iframe src="http://path.to.your.real.site" />
</html>
并且 src 属性将指向实际上具有所有动态 URL 的其他 URL。
您的另一个选择是 AJAX。不过,这对于一个例子来说实在是太长太复杂了。
【讨论】:
@maulik.patel 仅当您将站点中的每个链接都设为 POST 提交时(可行,但您需要提交 seppuku) @maulik.patel 您是否有理由避免使用 JavaScript?它的支持几乎是普遍的。除非你想为极少数已经关闭 JavaScript 并且不使用大多数网络的人开发一些东西,否则不要避免它。 @Patrick Robert Shea O'Connor 当我使用 java 脚本函数 window.history.pushState() 在不重新加载页面的情况下更改 url ...它将起作用...所以当页面加载时然后将加载js....在页面完全加载之前,实际的url将显示在地址栏中...我不会。 @cwallenpoole 我把这段代码放在我的codeigniter网站的什么地方?表示页眉、内容或页脚部分或其他地方... 【参考方案2】:不确定 codeigniter 是否可以在普通 php 中执行以下操作:
-
您的 url 始终映射到单个“外观”php 函数(甚至可能是“index.php”)。
在您的页面导航中,您始终从表单“发布”。永远不要使用“href="
在表单中有几个隐藏字段,用于记录当前和请求的页面。
当您的 php“外观”运行时,您检查“当前”和“请求”表单字段并调用适当的代码来呈现“请求”页面。
作为替代方案,您可以使用“cookies”而不是隐藏的表单字段和一些简单的 javascript 来设置“请求的”cookie 的值。
【讨论】:
【参考方案3】:使用 FRAMESET 或使用 Ajax
<FRAMESET ROWS="100%,*" BORDER=0 FRAMEBORDER=0 FRAMESPACING=0>
<FRAME NAME="top" SRC="/Login .aspx or .php" NORESIZE>
</FRAMESET>
【讨论】:
以上是关于如何在每个页面的地址栏中保持相同的 url?的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 如何在不重新加载页面或使用 # 或的情况下更改浏览器地址栏中的 URL?