2010-08-05 111 views
44

我希望301重定向整个网站,但排除存在于根目录中的名为“uploads”的文件夹中的所有内容。 我已经为此搜索了,但没有提出任何事情,或者我不认为我看到的是正确的。使用.htaccess重定向网站但排除一个文件夹

我们可以破解吗?使用时

RewriteEngine on 
RewriteRule !^uploads($|/) http://example.com%{REQUEST_URI} [L,R=301] 

此规则不匹配确实有任何/uploads/uploads/(领先/开始在模式丢失由于路径前缀移除任何URL路径:

回答

55

试试这个mod_rewrite规则在.htaccess文件中)并将请求重定向到example.com的相应路径。

+0

作品像魅力,谢谢! – PaulAdamDavis 2010-08-09 13:59:49

+0

是否有一个选项可以在后台执行此操作,所以用户不会实际重定向,但所有请求都会被代理到另一个地址中? – p1100i 2013-04-08 18:43:05

+0

@burninggramma尝试'P'而不是'R = 301'。 – Gumbo 2013-04-08 18:46:03

19

我想你想要这样的:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/uploads/ 
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L] 

如果你500 Internal Error然后仔细检查你有}之间的空间!在第二行。

49

简单的答案我只是偶然发现自己。

在之前的任何其他呼叫添加以下

RewriteRule ^(uploads) - [L] 
+1

上帝保佑这一行代码:D谢谢 – 2013-10-15 08:43:54

+0

没有问题@ M.Svrcek。 – PseudoNinja 2013-10-15 15:29:49

+1

如果有人很好奇[L]做什么:http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_l – 2015-08-04 20:36:37

6

基于MOD-别名解

重定向以外的所有特定的文件夹

以下行添加到您的根顶部/.htaccess:

RedirectMatch 301 ^/((?!uploads).*)$ http://newdomain.com/$1 

这会将所有页面(不包括/ uploads/*)从旧域重定向到新域。

+1

这完美的作品!非常有用,因为我无法使用mod_rewrite,因为没有在客户的服务器上启用 – lucaferrario 2016-06-05 16:00:44

相关问题