2011-09-05 67 views
0

我需要匹配URL格式,並依賴於URL匹配需要將傳入請求重定向到不同的頁面。Htaccess通過匹配url字符串和參數來重定向URL

例如

http://www.domain.com/path1/path2/錯-URL -1/?VAR1 = VAL1
http://www.domain.com /路徑1 /路徑/另一-錯誤的URL -1/?VAR1 = VAL1
http://www.domain.com/path1/path2/第三錯誤的URL -1/?VAR1 = val1
http://www.domain.com/path1/path2/第四錯誤的URL -1/?VAR1 = VAL1

看高點燃URL匹配。它總是有-1作爲url字符串。。這需要重定向一個靜態頁面。

和其他一些URL始終有var1作爲URL查詢字符串參數。因此,如果URL有var1作爲查詢字符串,那麼這些URL需要重定向到另一個靜態頁面。

所以我試過但沒有奏效。請幫我在這重定向腳本

RewriteEngine on 
    RewriteRule ^(path1/path2/[^-1]*)$ http://www.domain.com/target-page [L,R=301] 

回答

1

1.規則URL與-1/結束:

RewriteRule ^path1/path2/([^/]+)-1/$ http://www.domain.com/target-page [L,R=301] 

2.規則對具有查詢字符串參數var1=

RewriteCond %{QUERY_STRING} (^|&)var1=([^&]*)(&|$) 
RewriteRule .* http://www.domain.com/another-target-page [L,R=301] 

注意: 有了這些規則,現有的查詢字符串也會被傳遞給一個新的URL (例如/path1/path2/wrong-url-1/?say=meow將變成http://www.domain.com/target-page?say=meow)。要刪除它,請在目標網址的末尾添加?(例如http://www.domain.com/another-target-page? [L,R=301]

+0

很好,非常感謝,我已添加了此內容**。 domain.com/gifts/?[L,R = 301] **,它完美的工作,但對於查詢字符串仍然無法正常工作,我不知道我們在做什麼錯誤,讓我試試更多 – Elamurugan

+1

這是我的錯錯字):應該是'%'字符而不是'$':將'$ {QUERY_STRING}'更改爲'%{QUERY_STRING}' – LazyOne

+0

是的,我僅僅添加了%,並且當我昨天測試時它不工作。它的工作。非常感謝 – Elamurugan