ОК, вот простой пример.Я думаю, что существует множество более сложных решений, но пример содержит все основные элементы для задачи.Поддельная страница также не нужна.
Я проверял это только локально, и Chrome перенаправляет только на главную страницу.Другие браузеры (FF, IE, Opera) работают должным образом.
1) Перепишите ваш index.html как обычный набор фреймов (то есть: нет document.write
s)
2) Поставьте этот скриптв head
файла index.html
reDirectCleared=false;
3) Поместите этот скрипт в head
вашей главной страницы
(function reDirect(){
// ** Redirect if no frameset
if(top.window.location.pathname == self.window.location.pathname){
top.window.location.href = 'Your_index.html_URL?This_page_URL&'
}
// ** Frameset exist
if(!top.window.reDirectCleared){
top.window.reDirectCleared=true; // * Prevents further redirections
var searchString = top.window.location.search;
var pagePath = searchString.substring(1,searchString.indexOf('&'));
if(pagePath.indexOf(self.window.location.pathname)>-1 || pagePath==''){
return; // * Ready at frontpage
}
top.window.page.location.href = pagePath; // * Redirects page-frame
}
return;
})();
4) Поместите этот скрипт в head
из всех других страниц (не в index.html)
if(top.window.location.pathname == self.window.location.pathname){
top.window.location.href = 'Your_index.html_URL?This_page_URL&'
}
Ваша домашняя работа заключается в том, как заставить Chrome сделать это правильно, если он не работает с реальными http-страницами.