2013-10-10 258 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的一部分,因此您希望正则表达式成为重写规则的一部分。 –

相关问题