使用.htaccess重定向所有请求,但两个

时间:2011-11-10 20:21:34

标签: .htaccess

我是新手,但我有以下.htaccess正常工作:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^site\.com$
RewriteRule (.*) http://www.site.com/$1 [R=301,L]
RewriteRule ^$ /wordpress [L,R=301]

这会将site.com或www.site.com上的任何人重定向到www.site.come / wordpress 但是我有2个目录,我需要忽略这个规则: www.site.com/dir1 www.site.com/dir2 这些都需要被忽略(即使没有www也没有重写。)

编辑:它需要忽略目录中的目录AND文件。 所以site.com/dir1和site.com/dir1/index.php都应该保持不变。

我该怎么做?

谢谢! 克里斯

1 个答案:

答案 0 :(得分:2)

您只需要在第一个RewriteRule中添加几个条件:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^site\.com$
RewriteCond %{REQUEST_URI} !^/dir1(/|$)
RewriteCond %{REQUEST_URI} !^/dir2(/|$)
RewriteRule (.*) http://www.site.com/$1 [R=301,L]
RewriteRule ^$ /wordpress [L,R=301]

条件结束时的(/|$)测试a / for另一个路径组件或请求结束($)。如果您不是特定的,并且愿意忽略以(/|$)/dir1开头的任何请求,您可以将/dir2关闭。 /dir1a

第二个RewriteRule不需要任何新条件,因为它只匹配域根(^$)。