开发者

Taking a hashed URL and sending it to a new URL

开发者 https://www.devze.com 2022-12-10 05:51 出处:网络
For example, I\'d like to have my registration, about and contact pages resolve to different content, but via hash tags:

For example, I'd like to have my registration, about and contact pages resolve to different content, but via hash tags:

three links one each to the registration, contact and about page -

Is there a way using Javascript or PHP to resolve these pages to the separated content?


The hash is not sent to the server, so you can only do it in Javascript.

Check the value of location.hash.


There's no server-side way to do it. You could work with AJAX, but this will break the site for non-javascript users. The best way would probably be to have server-side content URLs (index.php?page=<page_id>) and rewrite these locally with JavaScript (to #<page_id>) and handle the content loading with AJAX then. That way you can have your hash-URLs for JS-enabled devices and everybody else can still use the site.

It does however require a bit of redundance because you need to provide the same content twice, once for inclusion via AJAX and once with the proper layout and everything via PHP.

If you just want hash URLs for aesthetic reasons, but don't want to rely on JS, you're out of luck. The semantics of URLs are against you: fragment IDs shouldn't really affect the content the URL is referring to, merely the fragment within that content. AJAX URLs are changing those semantics, but there's no good reason to do that if you don't have to.


I suppose you probably have a good reason, but can I ask, why would you do this? It breaks the widely understood standard of how hashs in URLs are supposed to work, and its just begging for trouble for interoperability with other clients, down the road.


You can use PHP's Global $_REQUEST variables to grab the requested URL and parse out the hashtag...

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号