2016-10-03 72 views
0

我正在開發一個Apache服務器(2.2),並且我試圖根據URL過濾器重定向一個URL。Apache RedirectMatch

https://mywebsite.com/static/contentUnavailable.html 

在我的httpd.conf文件我有以下的代碼..

RedirectMatch (.*)path/to/page?folder=folderDirectory/folderName /static/contentUnavailable.html 

我重新啓動Apache每次我進行修改:例如,要

https://mywebsite.com/path/to/page?folder=folderDirectory/folderName 

將重定向到這個文件,但是這個頁面沒有重定向。我在RedirectMatch中做了什麼錯誤?

回答

1

您無法將查詢字符串與redirectmatch匹配,對不起,您需要使用mod_rewrite並使用RewriteCond。粗略示例:

RewriteCond %{QUERY_STRING} ^folder 
RewriteRule^/static/contentUnavailable.html [R,L,QSD] 

這將匹配以文件夾開頭的查詢字符串(並繼續執行其他任何操作,不管它是什麼)。並將所有內容重定向到您想要的目的地,放棄進程中的查詢字符串(QSD標誌)。

無論如何,讓我推薦你首先堅持重定向/ redirectmatch(而其他人只是爲了mod_rewrite,即使是最簡單的重定向也只是盲目地)。你正在做的事情正確。

+0

謝謝你的回覆@ ezra-s!我嘗試了上面的代碼和一些其他的東西,但沒有運氣。我也試過把它放在區塊內,但是這也不起作用。這是否必須在.htaccess而不是httpd.conf中?我嘗試了兩個地點,但似乎沒有任何工作。 – Samantha

+0

這可以在任何情況下工作,但不需要.htaccess,特別是因爲您可以訪問主配置文件。儘可能地堅持虛擬主機上下文,這會讓事情變得更簡單。當你說「不工作」時,會發生什麼?儘量做到儘可能描述性,因爲上面的規則「做工」(我測試了它們),所以也許其他的東西是干擾的(其他重寫或虛擬主機等)。 –

+0

哎呀!所以我只是試圖匹配URI,它確實在httpd.conf文件中找到了,並且我被重定向了。例如,如果我的URL是https://example.com/path/to/page?folder=foo,並且我編輯查詢字符串以匹配'path/to/page',它會將我重定向到/ static/contentUnavailable。 HTML。但是,如果我專門爲查詢字符串嘗試匹配'foo',它不會重定向我,它會將我帶到具有特定文件夾內容的網頁 - 就好像它說URL中沒有任何內容匹配'foo'一樣。我也嘗試了其他網頁,但查詢過濾器對我來說並不合適。 – Samantha