2014-12-07 2 views
1

У меня есть приложение Symfony развернутую на OpenShift (это может быть любой сервер PAAS).htaccess конфигурации для WWW к не-WWW в Symfony2 приложение на OpenShift

Мой домен использует CNAME уплощение указывая, как это:

example.com -> example-user.rhcloud.com 
www -> example.com 

Мое приложение в OpenShift эти псевдонимы:

example-user.rhcloud.com 
example.com 
www.example.com 

Мои .htacces оригинальный из Symfony2 находится в каталоге/веб

DirectoryIndex app.php

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ 
    RewriteRule ^(.*) - [E=BASE:%1] 

    RewriteCond %{HTTP:Authorization} . 
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

    RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L] 

    RewriteCond %{REQUEST_FILENAME} -f 
    RewriteRule .? - [L] 

    RewriteRule .? %{ENV:BASE}/app.php [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
    <IfModule mod_alias.c> 
     RedirectMatch 302 ^/$ /app.php/ 
    </IfModule> 
</IfModule> 

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

Я попытался добавить эти строки в моей .htacces:

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] 
RewriteRule (.*) http://example.com/$1 [R=301,L] 

но когда я пытаюсь открыть www.example.com, мой браузер говорит, что существует цикл перенаправления. (example.com хорошо работает)

Как я могу изменить файл .htaccess, чтобы указать весь доступ в WWW, указывающий на домен, отличный от www?

+0

У меня такая же проблема с моим сайтом. Используемая вами конфигурация, которую вы опубликовали, больше не работает. Похоже, что есть фильтр OpenShift, который работает над ответом Apache и изменяет заголовок «Location» ответа на то, чтобы указать на тот же домен, что и исходный запрос, который был нацелен на ... У любого из openshift есть какие-либо комментарии? –

+0

@triforce попытаться перенаправить из администрирования домена вместо .htaccess, это единственный способ заставить его работать. –

ответ

0

Хорошо, я нашел решение, которое работает очень хорошо.

Так что мне не нужно было что-то менять в файле .htaccess и перенести перенаправление непосредственно из диспетчера DNS, который является облачной областью, поскольку он использует сглаживание CNAME.

  1. У меня есть два псевдонима для моего приложения (example-user.rhcloud.com):
    • example.com
    • www.example.com
  2. Мой домен от GoDaddy, но с DNS для Cloudfare
  3. в Cloudfare я добавил свой сайт, и в DNS Settings я поставил две записи:
    • CNAME - экзамен ple.com - это псевдоним example-user.rhcloud.com - TTL Автоматический
    • CNAME - WWW - это псевдоним example.com
  4. Тогда я сохранил изменения и открыл Page Rules одного и того же сайта
  5. Я создал новое правило страницы следующим образом:
    • Шаблон URL: www.example.ком
    • Forwarding ON
    • URL назначения: http://example.com
    • Forwarding Тип: 302

И вот, теперь главное WWW маршрут к одному без WWW

0

Не полностью но если ваш сайт зависит от трафика из поисковых систем, это хорошая практика SEO, чтобы использовать перенаправление 301, когда перенаправление является постоянным. Узнайте больше об этом здесь on MOZ.com