6

I have a site built with Codeigniter where there are a lot of pages and directories.

Let's say the site name is www.example.com (this is the index page). If the user goes to another page, for example clicking on the "about" link, how can I make the site name not change in the address bar for all pages?

Wesley Murch
  • 101,186
  • 37
  • 194
  • 228
Maulik patel
  • 1,551
  • 8
  • 22
  • 44
  • 2
    AJAX. JavaScript is the only way to change the content of the page without changing the request URI. – Dan Grossman Aug 17 '11 at 06:17
  • U can change routes settings with use of wild characters in routes.php – sshet Aug 17 '11 at 06:23
  • Buy a domain name and then make a redirection (maybe you can ask for this to your hosting provider). Fastest way: use an iframe. – Jose Adrian Aug 17 '11 at 06:30
  • 1
    My question is why would you *want* to do this? What is wrong with the address changing in the address bar? – Wesley Murch Aug 17 '11 at 06:55
  • 3
    You already asked the same question in [change site url using php or javascript?](http://stackoverflow.com/questions/6994361/change-site-url-using-php-or-javascript). – Gordon Aug 17 '11 at 07:21
  • Like the others, I don't understand the purpose of this : an url is made to be a link to a specific content. Not only it looks bad on the user expericnce level, but it is also catastrophic for your website's SEO. – Marc Brillault Feb 18 '16 at 10:19

3 Answers3

2

That is a bad idea if for nothing else then that it prevents users from being able to bookmark your site.

There are two ways to do this, however, if you are intent on this direction (and I really do suggest that you turn back now before it is too late). You can load everything in an iframe:

<!-- your site might look like this then -->
<html>
   <body><iframe src="http://path.to.your.real.site" />
</html>

And the src property would be directing to some other URL which actually has all of the dynamic URL's.

Your other option is AJAX. That is really too long and complicated for an example though.

cwallenpoole
  • 79,954
  • 26
  • 128
  • 166
  • @maulik.patel Only if you make every link in your site a POST submission (doable, but you'll want to commit seppuku) – cwallenpoole Aug 17 '11 at 06:43
  • @maulik.patel is there a reason you avoid JavaScript? It's support is almost universal. Unless you're trying to develop something for an extremely small group of people who've all switched off JavaScript and don't use a majority of the web, then don't avoid it. –  Aug 17 '11 at 06:58
  • @Patrick Robert Shea O'Connor when i am use java script function window.history.pushState() to change the url without reload the page ... it will works... so when page load then js will be load.... before page completely load the actual url will be displayed in address bar... which i doesn't wont. – Maulik patel Aug 17 '11 at 07:03
  • @cwallenpoole where i placed this code in my codeigniter site? means header, content or footer part or somewhere else... – Maulik patel Aug 17 '11 at 09:50
0

Use FRAMESET OR Use Ajax

<FRAMESET ROWS="100%,*" BORDER=0 FRAMEBORDER=0 FRAMESPACING=0>
     <FRAME NAME="top" SRC="/Login .aspx or .php" NORESIZE>
</FRAMESET>
Muhammad Fahad
  • 1,352
  • 15
  • 15
0

Not sure about codeigniter bu you can do this in plain php as follows:

  1. Your url always maps to a single "facade" php function (maybe even "index.php").
  2. In your page navigation you always "POST" from a form. Never use "href="
  3. In the FORMs you have a couple of hidden fields which record the current and requested pages.
  4. When your php "facade" runs you examine the "current" and "requested" form fields and call the appropriate code to render the "requested" page.

As an alternative you can use "cookies" instead of hidden form fields and some simple javascript to set the value of the "requested" cookie.

James Anderson
  • 27,109
  • 7
  • 50
  • 78