2010-12-17 249 views
9

我有http://mysite.com/index.php如何在地址栏中更改网址而不重新加载页面

和子菜单

但我想http://mysite.com/index.php处理每一个请求,只是使用Ajax请求更改内容。这样,该网站只加载内容部分,并且更快,更容易导航。这里

问题是SEO,因为只有网址谷歌将看到的是http://mysite.com/index.php,我想http://mysite.com/about-us关联到关于我们内容,http://mysite.com/product产品内容等

我知道我可以用PHP来完成这项工作,只需读取URL并即时编写Ajax,但是这样做整个页面将每次都重新加载。 有没有办法做到这一点,而无需重新加载整个页面? 我想我需要的是在子菜单中有一个常规锚点,检查指向“http://mysite.com/contact-us”,但点击时不是打开此页面,而是处理Ajax请求。

如果这是可能的,Google可能会将此视为黑帽大概,对吧?

问候 亚历

+3

你明白,阿贾克斯不会自动使事情更快, 对? – 2010-12-17 22:40:37

+1

那么做什么,因为它使用最新的流行语是不增值? – zzzzBov 2010-12-17 23:09:47

+0

zzzzBov:?????请问你还好吗? Ajax是闲谈流行语? – 2010-12-19 03:37:29

回答

12

你不能更改地址栏中的URL不会更改网页,因为要能做到这一点我couldlet你看我在http://www.imhackingyou.com/sucker但改变地址栏阅读http://www.bankofamerica.com/login

+0

你可以,但这是一件很不好的事情。 – 2010-12-17 22:59:42

+0

如果这是错误的,那该如何才是正确的答案?下面有一个很好的答案解释了如何做这个答案解释你不能! – mondi 2017-08-03 09:24:45

6

这是一个路由问题,而不是AJAX问题。

如果您正在使用另一种工具(咳嗽 ASP.NET MVC 咳嗽),你只需要添加一个路由(和我希望有办法在PHP中做到这一点),其接受的网址像

/home 
/products 
... 

和路由他们,说,

/index.php?area=home 
/index.php?area=products 

这是一个良好的MVC或REST风格的URL系统之外使用时通常与重写引擎来实现的。我在IIS上使用ISAPI Rewrite,但是如果你在LAMP堆栈上工作,我认为Apache提供了一个提供相同功能的模块。 (谷歌.htaccess

警告:RANT FOLLOWS

而且,对于它的价值,

  1. 避免试图使用JavaScript编写整个应用程序。服务器在那里是有原因的。作为Web开发人员的一部分工作是尽可能地将大量工作吸收到服务器上。当您尝试在客户端上执行所有操作时,浏览器性能和兼容性问题会让您生气。

  2. 在很多情况下避免回传是有道理的,但这不是你应该尝试应用到每个页面的银弹。通常,点击链接时加载新页面是有意义的。这是用户期望的,它更稳定(因为大部分基础设施都是服务器端的),并且不会比AJAX请求检索相同的东西慢。

规则:

  1. 永不断线的后退按钮。如果不仔细计划,大多数AJAX应用程序都会违反此规则
  2. 参见规则#1。
+7

对于规则2而言,+1没有打破后退按钮 – shevski 2010-12-17 23:05:07

+5

+1。 – Jonah 2010-12-17 23:16:16

+0

谢谢大卫,但它不是我要求的。我使用htaccess重写,主要用于SEO目的。无论如何,我同意第1点,我发现JS + Ajax非常有用,有时我使用它太多。但主要在CMS中,没有在访客方面。 – 2010-12-19 03:40:52

1

这听起来像它应该有一个rewrite engine来完成,但假设你有一个很好的理由使用AJAX,可以通过哈希后修改部分改变与JavaScript网址,或者更好的是,该hashbang:

window.location.hash = "#!about-us"; 

有关从SEO的角度来看的hashbang更多信息,请http://www.seomoz.org/blog/how-to-allow-google-to-crawl-ajax-content

+0

正是我想说的,但我找不到PDF:P – s3v3n 2010-12-17 22:54:07

0

如何Shopify做到这一点呢?去他们的网站,点击功能链接,你会看到URL说:

http://www.shopify.com/tour/sell-online

然后在任意的子链接的点击,你会看到,在不使用的URL的地址发生变化一个哈希,但没有页面翻转。

我不认为他们使用ajax来更改内容,因为它似乎都包含在页面上的隐藏div中,但无论如何,您都可以使用客户端技巧显然更改URL。

相关问题