Redirect 仅将单个非www主页重定向到www版本,而不重定向任何其他页面

Redirect 仅将单个非www主页重定向到www版本,而不重定向任何其他页面,redirect,Redirect,我需要将一个页面的非www版本(主页)重定向到www 我想让网站的其余部分单独呆着。由于需要将特定页面保留为非www 所以如果我尝试一个重写规则 /index.html 我得到一个无限重定向类型错误 也许有一种方法可以实现你想要的,尽管我必须说这有点“味道”。听起来你是在试图治疗一个症状,而不是解决一个问题(诚然,这可能超出了你的控制)。您的组织是否可能需要设置域指针,以便www.example.com和examples.com完全相同 那么你想要什么 http://example.com/转

我需要将一个页面的非www版本(主页)重定向到www

我想让网站的其余部分单独呆着。由于需要将特定页面保留为非www

所以如果我尝试一个重写规则

/index.html


我得到一个无限重定向类型错误

也许有一种方法可以实现你想要的,尽管我必须说这有点“味道”。听起来你是在试图治疗一个症状,而不是解决一个问题(诚然,这可能超出了你的控制)。您的组织是否可能需要设置域指针,以便www.example.com和examples.com完全相同

那么你想要什么

  • http://example.com/
    转到
    http://www.example.com/
但是你想要

  • http://example.com/index.html
  • http://example.com/otherstuff
    ,以及
  • http://example.com/subdir/path/file.php
保持不变

对于Apache:

    RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
    RewriteRule ^/$ http://www.example.com/ [R=301,L]
如果希望站点上的任何非www子域重定向到www版本:

    RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
    RewriteRule ^/$ http://www.%{HTTP_HOST}/ [R=301,L]
如果要重定向除特定页面以外的所有内容:

    RewriteCond %{REQUEST_URI} !^/subdir/path/file.php$ 
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

这是Apache的吗?Nginx?还有别的吗?-->是的,关于气味你是对的。这是一个joomla bug,这意味着我必须将某个页面保持在非www状态,否则重定向到支付网关失败。所以所有的链接都是硬编码的www。但这意味着我失去了发送到非www版本的站点的seo资源。你们有DNS记录的控制权吗?在我的Web服务器上,www被别名为域本身,因此对example.com/index.html的请求与www.example.com/index.html的请求完全相同。这可能是一种更干净的解决问题的方法。