2013-05-28 14 views
0

我試圖將除白名單外的所有文件重定向到404頁面,但我無法找到像RewriteCond這樣的方法添加到我的當前htaccess的代碼:RedirectMatch除了某些文件(css | js | jpg | png | etc)

RedirectMatch 404 ^.*$

現在我想添加類似

RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|js|png)$

雖然我知道RewriteCond僅供RewriteRule

有人可以幫我嗎?

所以問題是,我該如何做到這一點?

謝謝!

回答

1

在RedirectMatch語句中使用正則表達式應該爲你工作:

RedirectMatch 404 ^.*\.(?!(js|html|gif)).*$ 

後的括號內的東西?!是你的白名單。沒有在這裏命名的每個文件擴展名將導致404個。

+0

很酷!謝謝。但是我不明白爲什麼你需要白名單後的'。* $'..是不是應該表示它是表達式的最後部分?所以一個「test.js [。* here] $」與普通的「test.js $」不同。我在一個正則表達式工具上測試了它,它不像我認爲的那樣工作。相反,它的工作原來是我最初的問題。奇怪的。 >。< – reikyoushin

+0

開頭的'^'匹配字符串的開頭。之後,'。*'將匹配零或不限數量的字符,直到點,即'\ .'。然後我們用'(!!(js | html | gif))'排除點js,html和gif之後''。 '。*'會匹配點之後的任何其他內容,例如.php,.png等。 – meberhard

+0

aah ok。因此整個子集是'(!!(js | html | gif))。'',我認爲它是'(?!(js | html | gif))'和'。*' ,然後''*'我感到困惑。我認爲這不是必要的,但它是。謝謝! – reikyoushin