2014-01-07 73 views
6

我环顾四周,尝试了一些有效的规则和条件;而有些则不起作用,或者条件太多会导致其他域也重定向。这个工作对我来说:htaccess重定向+在url中隐藏子文件夹

# Redirect (also catches www.) 
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ 
RewriteRule ^(/)?$ subfolder [L] 

导致,如果你访问www.domain.com或domain.com 被重定向到domain.com/subfolder 大,但I'dd也喜欢/子文件夹部分是隐藏的网址。

如何实现这一目标?

请注意,我有多个域,每个域都应该重定向到它自己的文件夹。 我也希望每个页面在其各自的文件夹中仍可见。

所以www.domain.com/abc应该重定向到domain.com/subfolder/abc但显示domain.com/abc

回答

10

试试这个规则:

# remove www 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [NE,R=301,L] 

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ 
RewriteRule !^subfolder/ /subfolder%{REQUEST_URI} [L] 
+0

这工作!但我只注意到www。部分被视为可选,而不是被删除。虽然这很好,但它是否可以让它也一直删除www。 ? – Zerreth

+0

其实我们需要一个单独的www删除规则,因为这只是内部重写。 – anubhava

+0

谢谢,这帮助我解决了同样的问题。 :-) – r0ber7