301将所有页面重定向到root,而不是index.html,并将所有非www重定向到www

时间:2013-07-24 08:40:44

标签: .htaccess

我一直在寻找这个问题的精确答案,但却找不到它。

我推出了一个单页网站,取代了一个有很多页面的旧网站。现在,我想将所有内容重定向到www.domain.com。该页面使用index.html作为主页,但我不想重定向到该页面,我只想重定向到www.domain.com根目录。

我尝试使用:

RewriteRule ^.+$ / [R=302,NC,L]

但那只是破坏了我的样式表,并没有重定向任何东西。我见过的其他解决方案已重定向到index.html但我想重定向到/ root域。

另外,我想确保将所有非www页面重定向到www页面。有人可以帮帮我吗?

非常感谢

2 个答案:

答案 0 :(得分:0)

httpd.conf

中很可能是这样的
<IfModule dir_module>
    DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>

如果你请求一个文件夹(http://example.com/是对文件夹的请求),它将首先尝试index.php,然后尝试index.php3等等,并且第一个存在它会显示出来。如果您希望每个请求最终都为httpd.conf,则必须从http://example.com删除该内容。除非已禁用,否则它将显示www-root文件夹的目录视图。

答案 1 :(得分:0)

尝试:

# Any direct request for html/php pages
RewriteCond %{THE_REQUEST} /[^\?\ ]+\.(html?|php.) [NC]
RewriteRule ^ / [L,R=301]

这不会影响图片或样式表等。请注意,这与%{THE_REQUEST}变量匹配,因为%{REQUEST_URI}内部会转换为/index.html,因此您无法匹配反对。

如果您希望不存在的请求(通常会导致404)被重定向:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ / [L,R=301]

强制使用“www”:

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