2009-05-29 53 views
4

自從我與.htaccess混淆了一段時間後,我似乎無法完全理解這一點。我有一個網站,例如example.com,我希望example.com/*可以重定向到example.com/collector.html ,除了,我想繼續使用子目錄example.com/special下的網址。如何使用htaccess重定向除一個子目錄以外的所有東西

例如:

  • example.com/page.html應該重定向到example.com/collector.html
  • example.com/foo/bar應該重定向到example.com/collector.html
  • example.com/special/page.html不應重定向

我本來以爲像

RedirectMatch 302 ^/[^(special)]/.* /collector.html 
RedirectMatch 302 ^/[^(collector.html)/]* /collector.html 

會做的伎倆,但它似乎並沒有按照我想要的方式工作。

回答

4

也許這? (需要mod_rewrite)

RewriteEngine On 
RewriteRule !^(special(/.*)?|collector\.html)$ collector.html [R,L] 
0

試試這個:

RedirectMatch 302 /\/[^(special)]\/.+/ /collector.html 
RedirectMatch 302 /\/[^(collector\.html)]/ /collector.html 
+0

這可以使所有子目錄轉到收集器,但不起作用來重定向根目錄中的文件,例如, example.com/page.html – 2009-05-29 13:40:16

+0

會發生什麼?沒有任何重定向,頁面是否正確檢索? – 2009-05-29 14:04:44

+0

試試這個在同一行:RedirectMatch 302 /\/[^(special\//)|(collector\.html)].*/ /collector.html – 2009-05-29 14:07:31

0

也許......?

RewriteEngine on 
RewriteRule ^(?!special) collector.html [R,NC] 
2

這對我在Apache 2.2.13上的工作很好,我重新創建了你描述的目錄結構。

RedirectMatch 302 /(?!special) http://www.example.com/collector.html 

括號內的模式表示如果URI包含字符串'special',則不匹配。

此外mod並不總是可用的,在這種情況下是不需要的。

相關問題