如果网址包含"如何重定向?"?

时间:2015-06-12 12:34:58

标签: .htaccess mod-rewrite

我想出了

RewriteEngine on
RewriteRule ^(.*)?(.*)$ http://google.com [P]

但此方法适用于没有?的地址 - 它仅适用于?的人。

当我尝试使用?转义/?时 - 无论网址是否为?还是没有,我都会重定向,
当我用?逃离\?时 - 我最终没有重定向。

1 个答案:

答案 0 :(得分:2)

?QUERY_STRING的一部分而非REQUEST_URI的一部分,因此您无法直接在规则本身中进行检查。

您可以选中?QUERY_STRING来检查是否存在THE_REQUEST

# Check that QUERY_STRING is not empty:
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^ http://google.com/ [P]

# Check for the presence of a question mark in THE_REQUEST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s+(.+)\?(.+) [NC]
RewriteRule ^ http://google.com/ [P]