Как правильно обрабатывать перенаправление JavaScript? - PullRequest
1 голос
/ 26 сентября 2010

Когда пользователь переходит на базовый домен http://www.domain.com/ или http://domain.com/,
страница должна быть перенаправлена ​​на http://www.domain.com/#!/news.html

Я имею в виду что-то вроде этого:

if (window.location.href("http://www.domain.com/") || window.location.href("http://domain.com/")) {
    window.location.replace("http://domain.com/#!/news.html");
}

Это не сработает. В частности, страница предоставляется на двух разных доменах.
какие-нибудь идеи, как решить это в симпатичном JavaScript или jQuery (используя jQuery 1.4.2)?

Ответы [ 2 ]

4 голосов
/ 26 сентября 2010
var loc =  window.location.href;

if(loc == 'http://domain.com' || loc == 'http://www.domain.com') {
  window.location.href = 'http://domain.com/#!/news.html';
}

Редактировать :

var d   = window.location.hostname;
var loc = window.location.href;
if(loc == d) { 
  window.location.href = d +'/#!/news.html';
}

document.domain действительно спас мне жизнь, чтобы ответить на твой вопрос, я пытался ответить на твой вопрос с помощью регулярного выражения, мои шаблоны не соответствовалидоступные возможности.Похоже, мне действительно нужно вернуться к изучению регулярных выражений:)

Редактировать :

var d = window.location.hostname;
3 голосов
/ 26 сентября 2010

Используйте свойства разобранного URL-адреса на location, например pathname, hostname, search и hash, вместо того, чтобы пытаться связываться с href:

if (location.pathname==='/' && location.hash==='')
    location.hash= '#!/news.html';

В частности, страница предоставляется в двух разных доменах.

Лучше всего, чтобы SEO размещал ваш сайт только на одном конкретном имени хоста и перенаправлял любые другие связанные имена хостов на это каноническое имя хоста.Пусть конфиг HTTPD беспокоится о доменах, а не о вашем приложении.Например, если вы выбрали www.domain.com в качестве своего канонического имени хоста, в конфигурации Apache вы можете сказать:

<VirtualHost *:80>
    ServerName www.domain.com
    DocumentRoot ...
    ... other settings for the main site ...
</VirtualHost>

<VirtualHost *:80>
    ServerName domain.com
    ServerAlias someotherdomain.org
    ServerAlias www.someotherdomain.org
    Redirect permanent / http://www.domain.com/
</VirtualHost>

Другие веб-серверы имеют другие способы настройки перенаправлений.Если у вас нет доступа к конфигурации Apache, и вы ограничены .htaccess (тьфу), тогда вам придется использовать mod_rewrite для условного перенаправления на основе имени хоста.

...