Because of the way framed web pages are created, search engine robots have a difficult time spidering sites built in frames. As a general rule, search engine robots are not very good at executing client-side code, and framed pages are "built" on the client side. The best way to make a website accessible to the robots is to take it out of frames, but what can be done if the site absolutely must remain in frames?
How frames are built
Typically the "framing" page--the page that includes the <FRAMESET> tags--does not contain any links to the rest of the website; rather, it contains only information necessary for the browser to construct the framed pages.
<html>
<head>
<title>SuperWidget XYZ from XYZ</title>
</head>
<frameset rows="20%,80%">
<frame name="frameTop" src="header.html">
<frameset cols="30%,70%">
<frame name="frameLeft" src="navbar.html">
<frame name="frameMain" src="page1.html">
</frameset>
</frameset>
</html>
Figure 1—index.html: the "framing" page
The framing page loads the files named in the <FRAME> tags into the frames defined in the framing page. In our example, they look like this:
<html>
<head>
<title>Navbar</title>
</head>
<body>
<a href="page1.html" target="frameMain">Page 1</a><br>
<a href="page2.html" target="frameMain">Page 2</a><br>
<a href="page3.html" target="frameMain">Page 3</a><br>
</body>
</html>
Figure 2—navbar.html
<html>
<head>
<title>Page 1</title>
</head>
<body>
Welcome to XYZ, home of the new and improved SuperWidget XYZ. We
have the best widgets available anywhere today, and at half the price
of most leading widgets!
</body>
</html>
Figure 3—page1.html