0

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

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

我尝试使用:

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

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

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

非常感激

4

2 回答 2

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]
于 2013-07-24T08:58:57.690 回答
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 文件夹的目录视图。

于 2013-07-24T08:49:20.537 回答