2014-01-24 4 views
0



Я отчаянно пытался выяснить, как перенаправить только корень, без перенаправления (буквально) ничего после косой черты/(включая якоря #).

У меня есть целевая страница, я бы также перенаправил весь трафик domainname.com, но также должен позволить людям войти на главный сайт, используя глубокие ссылки, такие как domainname.com/store, domainname.com/#about, или domainname.com/#up (основная страница & Nav использует якоря).

кода я использую ниже и результаты:
- перенаправляет domainname.com> landingpage.domainname.com (ХОРОШО)
- не перенаправляет domainname.com/store (ХОРОШО)
- перенаправляет имя_домен .com/# о> landingpage.domainname.com/#about (BAD - ЭТО ПРОБЛЕМА)
Htaccess корневой домен редирект, но не/# AnchorName

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?domainname\.com [NC] 
RewriteRule ^$ http://landingpage.domainname.com [L,NC,R=301] 

Спасибо,

Джеймс

+0

Вы понимаете, что веб-сервер получает только 'http: // landingpage.domainname.com /' leave' # about'. – anubhava

ответ

0

Вы не можете использовать Htaccess для этого, потому что #about часть URL никогда не отправляется на сервер, и если он никогда не отправляется на сервер, все apache и mod_rewrite видят /, без #about. #about является фрагментом URL-адреса и находится строго на стороне браузера. Невозможно предотвратить эту переадресацию с помощью mod_rewrite.

Следовательно, вам нужно будет написать javascript, чтобы сделать перенаправление, и избавиться от перенаправления в вашем файле htaccess.

<script language=”javascript” type=”text/javascript”> 
if(window.location.hostname != "landingpage.domainname.com" && // check that hostname isn't landingpage 
    !window.location.hash && // check that there is no fragment 
    window.location.pathname == "/") { 
    window.location = "http://landingpage.domainname.com/"; 
} 
</script> 
+0

Большое спасибо за объяснение! – James

0

James

У вас есть возможность удалить ваши ресурсы с сайта domain.com/store на sub.domain.com/store? Похоже, вы будете делать огромное количество перенаправлений, которые со временем станут громоздкими.

В любом случае, я просто переписал бы запросы domain.com и оставил бы всех остальных в покое.

RewriteEngine На

RewriteCond% {HTTP_HOST}^http://www.example.com [NC]

RewriteRule^(. *) $ http://sub.example.com/ $ 1 [R = 301, L]

Смежные вопросы