2012-11-13 36 views
0

我有一个网站,让我们说http://myweb.com,我想将其迁移到根目录http://myweb.com/subfolder/htaccess的各种重写需要

我需要下面的东西的子文件夹,我想使用htaccess文件:

1 )重定向所有非www到www 2)将根目录中的所有文件重定向到子文件夹中的等价文件,同时将所有htm扩展名更改为html,即根文件file.htm中的文件必须重写为文件在子文件夹像子文件夹/ file.html 3)我希望在地址仍然显示www.myweb.com而不是www.myweb.com/subfolder

这一切都有可能吗?如何?感谢您的任何答案

回答

1

添加这些规则htaccess的你的文档根:

RewriteEngine On 

# 1) Redirect all non-www to www 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301] 

# 2) Redirect all files in the root to equivalent files in the subfolder 
# at the same time changing all htm extension to html 
RewriteCond %{REQUEST_URI} !^/subfolder/ 
RewriteRule ^(.*)\.htm$ /subfolder/$1.html [L] 
RewriteCond %{REQUEST_URI} !^/subfolder/ 
RewriteRule ^(.*)$ /subfolder/$1 [L] 

最后的规则没有R标记,这样就不会导致外部重定向(从而改变什么在浏览器的URL地址栏)。

+0

你好乔恩,谢谢你的回答。似乎它正在工作,但我仍然在浏览器中看到新地址。如果在子文件夹中找不到该页面,您也可以建议一种重定向到某个页面的方法吗? – user1238784

+0

我发现了一些更多的问题。好像在IE9中,如果我输入地址:http://myweb.com/,但是在Firefox中它可以正常工作,那么WWW的非www不起作用。奇怪的是,在IE9中,url保存在地址中,尽管在firefox中它不是。我很困惑! – user1238784