2013-10-10 229 views
0

簡而言之,我試圖將特定頁面重定向到我的404頁面。如何將特定頁面重定向到我的404頁面?

我正在通過一個正則表達式來做這件事。超新的.htaccess和mod_rewrite。

基本上,我想以特定格式的所有網頁發送給我的404。例如:

http://mydomain.com.au/hello.html?wvsessionid=847180243 
http://www.mydomain.com.au/gadfg.html?wvsessionid=dsvf8ya87adfg.744 

上述所有的頁面應該去我的404頁。

這是我想出來的,儘管它根本不起作用。不會返回內部錯誤或任何內容,它只是讓頁面仍然可以被查看。不確定爲什麼,因爲我還是新的正則表達式。

RewriteCond %{HTTP_HOST} ^www\.mydomain\.com\.au 
RewriteRule ^/?(.*)/(wvsessionid)$ /$1.html?wvsessionid=$2 [L,R=404] 

有沒有人有任何想法我可以解決這個問題,使其工作?

回答

1

在重寫規則中,您無法與查詢字符串(?之後的所有內容)進行匹配。您需要在重寫條件下與 var匹配:

RewriteCond %{HTTP_HOST} ^www\.mydomain\.com\.au [NC] 
RewriteCond %{QUERY_STRING} (^|&)wvsessionid= 
RewriteRule !^/404.html - [L,R=404] 
+0

啊,對了。謝謝你清理那個。代碼完美工作,歡呼! – Fizzix

+0

因此,如果我想要搜索域中的其他內容,比如'www.mydomain.com.au/homehere/uncategorised.html',我是否會將代碼中的'wvsessionid'替換爲'uncategorised'。還是比這更復雜? – Fizzix

+0

@fizzix「uncategorised.html」位不是查詢字符串,因此您無法用該字符替換查詢字符串。它是URI的一部分,因此您希望正則表達式成爲重寫規則的一部分。 –

相關問題