Visit Jeremy's Blog.
Go Back > Forums > Non-*NIX Forums > Programming
User Name
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.


  Search this Thread
Old 03-26-2009, 05:52 PM   #1
Senior Member
Registered: Dec 2004
Posts: 1,005

Rep: Reputation: 67
SEO: search-friendly URLs worth it? possible without extensive redesign?

I'm working on an extensive site containing about 1000 PHP files. In addition to search pages and account pages and so on, a great many of these files accept numeric query string parameters:
Which might load up a school named "Occidental College" or perhaps a Career such as "Computer Programmer - Applications".

We are considering trying to alter the structure of our site to present more user-friendly URLs like this instead:

I completely understand how we might use mod_rewrite and some database work to map that URL onto However, I'm wondering a couple of things and would like some input.

1) If we don't change our internal links to a page (i.e., they still point to then this doesn't really help our search engine ranking unless external sites somehow know to link to the new fancy URLs, right? The perhaps futile hope is that we don't have to go change all the links in our 1000 PHP files and that we might use some mod_rewrite trickery to gain some advantage here.

2) Suppose I type into my browser. Is it possible to display the search-friendly URL ( in the browser instead so that if someone copies it to an email they get the long fancy URL?

2a) Is it possible to efficiently redirect a search engine looking for to and thereby gain all the advantages of our supposedly search-engine-friendly URL? Would we need to send an HTTP response code (301? 303?). Will the search engine be smart enough to know that the search-friendly URL is the 'real' link when it encounters the old-style link in the HTML of our site or somebody else's site? Does it help our ranking at all? What is the best technique for this?

3) I've heard that Amazon went from the query string / id approach to search-friendly URLs by using mod_rewrite type technology and ignoring the middle search-friendly part of a URL and putting the id part at the very end of the URL like this book called "Choke" by Chuck-Palahniuk.

This is what I think I should be shooting for and I understand how to accept the URL on our server and load up the right content, I do not understand how to capitalize on it to improve our search ranking. Thoughts?

4) Will this really help that much?

Any and all discussion of this is welcome and encouraged.
Old 03-27-2009, 12:54 AM   #2
LQ Newbie
Registered: Oct 2001
Location: Germany
Distribution: Debian Sid (Unstable)
Posts: 19

Rep: Reputation: 0
1) Yes, that is correct. If you don't change your internal links SEs would probably never know the long URLs. Yes and no, one part, that defaults to the 'no', is done by your app:

print("<pre>".print_r($_SERVER, true)."</pre>");
Call this script e.g. urltest.php and call it this way:

The second part has to be done by mod_rewrite (put this in .htaccess):

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/(.*)_(.*)$ testurl.php?cat_name=$1&page=$2 [L]
Now call your script again with the long URL and compare the output:

You can also do this by ErrorPage 404 but I have heard that this is much slower.

As you can see the first call has only 'id=x' set, by the second has 'cat_name=x' and 'page=y' set. So you can may do something like this in a central place of your script (lets say ''?):

if (isset($_GET['id'])) {
// Old link found, load cat_name and page from DB!
$result = mysql_query("SELECT cat_name, page, title FROM some_table WHERE id=".(int)$_GET['id']." LIMIT 1");
if (mysql_numrows($result) == 0) {
// Not found!
header("HTTP/1.0 404 NOT FOUND"); // This header might be wrong, double-check it please...
die(); // This die() is important because w/o it you have a possible race-condition
list($cat_name, $page, $title) = mysql_fetchrow($result);
header("Location: http://your-site/".$cat_name."/".$page."_".$title);
die(); // Again required!

// Continue with finding the cat_name/page combination here, I leave it up to you.
2) Of course, once you have changed all internal links? I know, that will be a long or short night... :/

3) With my snippet above, no longer possible. It would result in an endless loop

4) Maybe, I'm not a SEO specialist, but I have heard too, that keeping the browser title in URL might also help. I extended my example a little, see variable $title for instance.

I hope that gives you a little idea...

Good luck,
Old 04-28-2009, 03:39 PM   #3
Senior Member
Registered: Dec 2004
Posts: 1,005

Original Poster
Rep: Reputation: 67
I have managed to get a pretty awesome rewrite going using mod_rewrite on a testing server. It will take this url:
and cause a 301 redirect (permanently moved) to this:
Additionally, mod_rewrite knows when it receives that 2nd url that it should internally rewrite it (no redirect) to the original file with a &rewrite=1 bit added to the query string. This works and attempts to visit the original page get 301 rewritten and then the 301 rewritten request with the SEO-friendly url will load the correct page with the correct data.

HOWEVER there is a problem. All the images, scripts, and links are broken in the resulting page because they are evaluated in the browser relative to the new-fangled seo-friendly page. How do you deal with this problem?
Old 11-19-2009, 07:56 AM   #4
LQ Newbie
Registered: Nov 2009
Posts: 4

Rep: Reputation: 0
Hire Drupal Developer

You can make search-friendly URLs the following types.

1.Ht Access.
2.Redirect the URL.
3..And try this code.
joomla redirection:
global $mainframe;
$link1 = "index.php?option=com_redirect";

4.Java Script:
<SCRIPT language="JavaScript">
Old 11-19-2009, 01:23 PM   #5
LQ Veteran
Registered: Nov 2005
Location: Annapolis, MD
Distribution: Arch/XFCE
Posts: 17,802

Rep: Reputation: 738Reputation: 738Reputation: 738Reputation: 738Reputation: 738Reputation: 738Reputation: 738
Not a Linux Question---off to Programming
Old 12-19-2009, 01:00 PM   #6
Senior Member
Registered: Dec 2004
Posts: 1,005

Original Poster
Rep: Reputation: 67
painful process

OK I have been working on this SEO thing for some time now and thank goodness I'm getting paid for it as it's really involved.

The optimization so far has required a variety of steps:
1) create rewrite rules in the .htaccess file to map the old ugly urls onto the new nice ones with a 301 redirect (permanently moved). Because the fancy new urls have information that doesn't exist in the old urls, this requires a RewriteMap directive so that I can query a database or text file mapping old info onto new ones.

2) create rewrite rules which internally map the fancy new urls onto my actual PHP files in a meaningful way.

3) alter all of my PHP code to link to the fancy new urls rather than the old ones. also add a <base> tag to my html output so that images, javascript, css, etc. will work. the base tag is necessary because my html code uses relative path references for images, js, css, etc. and the new urls' directory structure has nothing to do with the actual location of the files.

It's a total pain.


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
Network Redesign and Software Kristijan Linux - Networking 4 08-23-2006 05:39 PM
Why don't LQ rewrite urls to enhance search engine rankings? chr15t0 LQ Suggestions & Feedback 7 04-26-2006 05:49 AM
how to check urls and stop internet urls in network gface Linux - Networking 5 03-24-2005 09:48 PM
i want to make a search engine like google , but limited to some urls varzosu Programming 3 06-27-2004 04:40 PM

All times are GMT -5. The time now is 07:40 AM.

Main Menu
Write for LQ is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration