2010-08-05 124 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

相關問題