.htaccess配置,用于在Openshift上的Symfony2应用程序中从www到非www

.htaccess配置,用于在Openshift上的Symfony2应用程序中从www到非www,.htaccess,symfony,mod-rewrite,openshift,paas,.htaccess,Symfony,Mod Rewrite,Openshift,Paas,我在openshift上部署了一个Symfony应用程序(它可以是任何PAAS服务器) 我的域使用CNAME展平指向,如下所示: example.com -> example-user.rhcloud.com www -> example.com Openshift中的我的应用程序具有以下别名: example-user.rhcloud.com example.com www.example.com My.htacces是Symfony2的原件,位于/web DirectoryI

我在openshift上部署了一个Symfony应用程序(它可以是任何PAAS服务器)

我的域使用CNAME展平指向,如下所示:

example.com -> example-user.rhcloud.com
www -> example.com
Openshift中的我的应用程序具有以下别名:

example-user.rhcloud.com
example.com
www.example.com
My.htacces是Symfony2的原件,位于/web

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一直运作良好)


如何更改.htaccess文件以将所有www访问指向非www域?

好的,我找到了一个非常有效的解决方案

因此,我不必更改.htaccess文件中的任何内容,也不必直接从DNS管理器(我的是cloudfare)中重定向,因为它使用CNAME扁平化

  • 我的应用程序有两个别名(例如user.rhcloud.com):
    • example.com
    • www.example.com
  • 我的域名来自godaddy,但有DNS到Cloudfare
  • 在Cloudfare中我添加了我的站点,在DNS设置中我放置了两条记录:
    • CNAME-example.com是example-user.rhcloud.com-TTL Automatic的别名
    • CNAME-www-是example.com的别名
  • 然后我保存了更改并打开了同一站点的
    页面规则
  • 我创建了一个新的页面规则,如下所示:
    • URL模式:www.example.com
    • 转发
    • 目标URL:
    • 转发类型:302

  • 就是这样,现在主要的www路由指向一个没有www的路由并不完全相关,但是如果你的站点依赖于搜索引擎的流量,当重定向是永久性的时,使用301重定向是一个很好的SEO实践。在这里阅读更多信息

    我的网站也有同样的问题。您发布的配置以前可以使用,但现在不再使用了。似乎有一些OpenShift“过滤器”在Apache响应上工作,并更改响应的“位置”头,以指向发起请求的目标域。。。openshift的任何人有任何意见吗?@triforce尝试从域管理重定向而不是.htaccess,这是我使其工作的唯一方法。
    RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
    RewriteRule (.*) http://example.com/$1 [R=301,L]