2015-05-01 3 views
0

Я выполняю перенаправление старого URL с помощью javascript.Javascript redirect loop

Мои старые URL-адреса в индексе Google - это что-то вроде domain.com/#!about/c3g8. Мой новый URL-адрес для нашей страницы похож на domain.com/#about, так как я меняю свой сайт на один сайт подкачки.

У моего старого сайта было 4 страницы без включения корневой страницы. У каждой страницы был уникальный финал. Они -

/c3g8 
/cjg9 
/cee5 
/cce3 

В переназначения не может быть сделано в .htaccess, потому что они содержат хэш (#) символ в них. Поэтому у меня нет выбора, кроме javascript. Моего текущего Redirect коды расслоения плотного, как следовать

if(document.URL.indexOf(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/)) { 
    var url_new = document.URL.replace(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/,''); 
    window.location = url_new; 
    break; 
} 

Все внутренние страницы перенаправлять правильно, но страница стала циклом редиректа и пока я не нажимать Esc клавиши дважды.

У меня есть этот код $('a[href^=#]').bind("click", function(event){.... в моем js тоже. Как я могу перенаправить, не приводя к циклу перенаправления?

Заранее благодарен!

ответ

1

Вы смешиваете соответствующее регулярное выражение и indexOf. Условие if всегда будет оцениваться как -1, что является правдивым, поэтому перенаправление всегда происходит.

Используйте regex.test() вместо этого, и использовать модификатор g сказать ему, чтобы заменить все экземпляры ...

if(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/.test(document.URL)) { 
    var url_new = document.URL.replace(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/g,''); 
    window.location = url_new; 
    break; 
} 
+0

Он избежал петли переадресации, но не перенаправлять, когда я нажимаю из индекса Google. Google показывает 'domain.com/#! About/cjg9' и он приземлился на тот же URL-адрес. Я должен обновить один раз, чтобы получить правильный url 'domain.com/# about' – William

+0

Когда вы выполняете этот код? Я бы поставил 'alert (document.URL)' непосредственно перед 'if' и посмотрел, что он говорит (если что-нибудь), когда вы пришли из google, - должен дать вам представление. – CupawnTae

+0

Он предупреждает старый URL из индекса Google. Когда я нажимаю 'ok', ничего не происходит. Я использовал '$ (document) .ready (function() {......' и помещал ваш код в это. – William

0

Попробуйте это:

var url_new = document.URL.replace(/!|\/c3g8|\/cjg9|\/cee5|\/cce3/,''); 
if(document.URL !== url_new){ 
    window.location = url_new; 
} 
+0

Он избежал цикла переадресации, но не перенаправлялся при нажатии на индекс Google. Google показывает 'domain.com/#! About/cjg9' и он приземлился на тот же URL-адрес. Я должен обновить один раз, чтобы получить исправление url 'domain.com/# about' – William