我一直在寻找这个问题的精确答案,但却找不到它。
我推出了一个单页网站,取代了一个有很多页面的旧网站。现在,我想将所有内容重定向到www.domain.com。该页面使用index.html作为主页,但我不想重定向到该页面,我只想重定向到www.domain.com根目录。
我尝试使用:
RewriteRule ^.+$ / [R=302,NC,L]
但那只是破坏了我的样式表,并没有重定向任何东西。我见过的其他解决方案已重定向到index.html但我想重定向到/ root域。
另外,我想确保将所有非www页面重定向到www页面。有人可以帮帮我吗?
非常感谢
答案 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]